🎖️GitЯра🎖️
Commit 517b96380bb5d6462d961e664567019c4e60c10b
Parents : e8af75e
Author : James Rich <2199651+jamesarich@users.noreply.github.com>
Signature : Signature validation error
Date : 2026-08-15T19:48:13Z
Committer : GitHub <noreply@github.com>
Date : 2026-08-15T19:48:13Z
feat(settings): add About screen with hardware carousel and rename license screen to Acknowledgements (#6721)
Changes
24 files changed, 956 insertions(+), 73 deletions(-)
Diff
diff --git a/.skills/compose-ui/strings-index.txt b/.skills/compose-ui/strings-index.txt
index 8241a8f0e4..85d5f4815d 100644
--- a/.skills/compose-ui/strings-index.txt
+++ b/.skills/compose-ui/strings-index.txt
@@ -11,6 +11,7 @@ a11y_node_online
a11y_node_role
a11y_node_signal
a11y_nodes_at_hop
+about
accept
acknowledgements
### ACTION ###
@@ -95,6 +96,7 @@ app_settings
app_too_old
app_version
apply
+apps
### AQI ###
aqi
aqi_good
@@ -294,6 +296,7 @@ contrast_medium
contrast_standard
conversations
copy
+copyright_notice
create_your_own_networks
critical_alert
critical_alerts
@@ -535,6 +538,7 @@ doc_title_telemetry
doc_title_translate
doc_title_units
doc_title_widget
+documentation
done
dont_show_again_for_device
double_tap_as_button_press
@@ -767,6 +771,7 @@ geofence_radius
geofence_remove_area
geofence_set_area
get_started
+github_repository
good
### GPIO ###
gpio
@@ -1159,6 +1164,8 @@ name
name_cannot_be_empty
navigate_back
navigate_into_label
+need_hardware
+need_hardware_description
neighbor_info
neighbor_info_config
neighbor_info_enabled
@@ -1375,6 +1382,7 @@ primary
primary_channel_feature
privacy_url
private_key
+project_information
provide_location_to_mesh
provider_name_exists
proxy_to_client_enabled
@@ -1843,7 +1851,10 @@ waypoint_delete
waypoint_edit
waypoint_new
waypoint_received
+website
weight
+what_is_meshtastic
+what_is_meshtastic_description
### WIFI ###
wifi_config
wifi_devices
diff --git a/core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/DeepLinkRouter.kt b/core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/DeepLinkRouter.kt
index a33d7d9227..1151f77eae 100644
--- a/core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/DeepLinkRouter.kt
+++ b/core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/DeepLinkRouter.kt
@@ -270,6 +270,8 @@ object DeepLinkRouter {
"clean-node-db" to SettingsRoute.CleanNodeDb,
"debug-panel" to SettingsRoute.DebugPanel,
"about" to SettingsRoute.About,
+ "acknowledgements" to SettingsRoute.Acknowledgements,
+ "attributions" to SettingsRoute.Acknowledgements,
"filter-settings" to SettingsRoute.FilterSettings,
"helpdocs" to SettingsRoute.HelpDocs,
"help-docs" to SettingsRoute.HelpDocs,
diff --git a/core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/Routes.kt b/core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/Routes.kt
index 2c375a6de4..c1630e7fca 100644
--- a/core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/Routes.kt
+++ b/core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/Routes.kt
@@ -172,6 +172,8 @@ sealed interface SettingsRoute : Route {
@Serializable data object About : SettingsRoute
+ @Serializable data object Acknowledgements : SettingsRoute
+
@Serializable data object FilterSettings : SettingsRoute
@Serializable data object NodeList : SettingsRoute
diff --git a/core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/DeepLinkRouterTest.kt b/core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/DeepLinkRouterTest.kt
index 0465cccf8c..654141becf 100644
--- a/core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/DeepLinkRouterTest.kt
+++ b/core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/DeepLinkRouterTest.kt
@@ -293,6 +293,27 @@ class DeepLinkRouterTest {
assertEquals(listOf(SettingsRoute.Settings(destNum = 1234), SettingsRoute.About), route("/settings/1234/about"))
}
+ @Test
+ fun `settings about resolves to the About screen`() {
+ assertEquals(listOf(SettingsRoute.Settings(destNum = null), SettingsRoute.About), route("/settings/about"))
+ }
+
+ @Test
+ fun `settings acknowledgements resolves to the Acknowledgements screen`() {
+ assertEquals(
+ listOf(SettingsRoute.Settings(destNum = null), SettingsRoute.Acknowledgements),
+ route("/settings/acknowledgements"),
+ )
+ }
+
+ @Test
+ fun `settings attributions is an alias for Acknowledgements`() {
+ assertEquals(
+ listOf(SettingsRoute.Settings(destNum = null), SettingsRoute.Acknowledgements),
+ route("/settings/attributions"),
+ )
+ }
+
@Test
fun `settings with sub-route without destNum`() {
assertEquals(listOf(SettingsRoute.Settings(destNum = null), SettingsRoute.LoRa), route("/settings/lora"))
@@ -338,6 +359,8 @@ class DeepLinkRouterTest {
"clean-node-db" to SettingsRoute.CleanNodeDb,
"debug-panel" to SettingsRoute.DebugPanel,
"about" to SettingsRoute.About,
+ "acknowledgements" to SettingsRoute.Acknowledgements,
+ "attributions" to SettingsRoute.Acknowledgements,
"filter-settings" to SettingsRoute.FilterSettings,
)
diff --git a/core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/NavigationConfigTest.kt b/core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/NavigationConfigTest.kt
index 638c15629a..91520244d7 100644
--- a/core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/NavigationConfigTest.kt
+++ b/core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/NavigationConfigTest.kt
@@ -101,6 +101,7 @@ class NavigationConfigTest {
SettingsRoute.CleanNodeDb,
SettingsRoute.DebugPanel,
SettingsRoute.About,
+ SettingsRoute.Acknowledgements,
SettingsRoute.FilterSettings,
// FirmwareRoute
FirmwareRoute.FirmwareGraph,
diff --git a/core/resources/src/commonMain/composeResources/files/heltec_mesh_pocket.svg b/core/resources/src/commonMain/composeResources/files/heltec_mesh_pocket.svg
new file mode 100644
index 0000000000..1af4f5c6bd
--- /dev/null
+++ b/core/resources/src/commonMain/composeResources/files/heltec_mesh_pocket.svg
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ viewBox="379.51 218.53 478.45 660.45"
+ version="1.1"
+ id="svg72"
+ sodipodi:docname="heltec_mesh_pocket.svg"
+ inkscape:version="1.4 (e7c3feb1, 2024-10-09)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview
+ id="namedview72"
+ pagecolor="#ffffff"
+ bordercolor="#000000"
+ borderopacity="0.25"
+ inkscape:showpageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1"
+ inkscape:zoom="0.78391112"
+ inkscape:cx="4.4647919"
+ inkscape:cy="146.06248"
+ inkscape:window-width="1472"
+ inkscape:window-height="890"
+ inkscape:window-x="0"
+ inkscape:window-y="38"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="Layer_2" />
+ <defs
+ id="defs1">
+ <style
+ id="style1">.cls-1{fill:#d5bd0a;}.cls-2{fill:#eceded;}.cls-3{fill:#e3e1e0;}.cls-4{fill:#1d1d1b;}.cls-12,.cls-5,.cls-7{fill:none;}.cls-5,.cls-7{stroke:#1d1d1b;stroke-miterlimit:10;}.cls-5{stroke-width:0.87px;}.cls-6{fill:#fff;}.cls-7{stroke-width:3.49px;}.cls-8{fill:#2b293d;}.cls-9{fill:#2ea358;}.cls-10{fill:#efefef;}.cls-11{fill:#acd087;}.cls-12{stroke:#000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.31px;}.cls-13{fill:#2590d0;}.cls-14{fill:#4e4d4e;}</style>
+ </defs>
+ <g
+ id="Layer_2"
+ data-name="Layer 2">
+ <path
+ class="cls-1"
+ d="M784.42,219.19H419.9a39.73,39.73,0,0,0-39.74,39.73V838.6a39.74,39.74,0,0,0,39.74,39.73H784.42a39.73,39.73,0,0,0,39.73-39.73V258.92A39.73,39.73,0,0,0,784.42,219.19Zm31,619.41a31,31,0,0,1-31,31H419.9a31,31,0,0,1-31-31V258.92a31,31,0,0,1,31-31H784.42a31,31,0,0,1,31,31Z"
+ id="path1" />
+ <rect
+ class="cls-2"
+ x="388.9"
+ y="227.92"
+ width="426.51"
+ height="641.67"
+ rx="31"
+ id="rect1"
+ style="fill:#fcfcfc;fill-opacity:1" />
+ <path
+ class="cls-1"
+ d="M857.3,302.32V633.56a7.53,7.53,0,0,1-1.75,4.84l-31.4,37.77V260a67.74,67.74,0,0,1,32.06,36.41A16.78,16.78,0,0,1,857.3,302.32Z"
+ id="path2" />
+ <rect
+ class="cls-3"
+ x="439.49"
+ y="398.62"
+ width="324.87"
+ height="163.57"
+ id="rect2"
+ style="fill:#bfbfbf;fill-opacity:1" />
+ <rect
+ class="cls-8"
+ x="513.04"
+ y="724.36"
+ width="166.81"
+ height="33.44"
+ rx="3.87"
+ id="rect48" />
+ <path
+ class="cls-9"
+ d="M558.92,724.36V757.8h-42a3.87,3.87,0,0,1-3.87-3.87V728.24a3.88,3.88,0,0,1,3.87-3.88Z"
+ id="path48" />
+ <rect
+ class="cls-10"
+ x="514.95"
+ y="740.28"
+ width="20.46"
+ height="2.8"
+ transform="translate(-383.39 761.4) rotate(-55.94)"
+ id="rect49" />
+ <path
+ class="cls-10"
+ d="M551.65,750.93,541.54,736l-10.12,14.93-2.31-1.56L540,733.29a1.8,1.8,0,0,1,1.54-.82h0a1.85,1.85,0,0,1,1.57.87l10.85,16Zm-10.88-16.07s0,0,0,0Zm1.57,0,0,0Z"
+ id="path49" />
+ <path
+ class="cls-10"
+ d="M566.72,731.61a31.88,31.88,0,0,1,5.15-.39c2.66,0,4.6.6,5.84,1.68a5.43,5.43,0,0,1,1.82,4.25,5.93,5.93,0,0,1-1.61,4.35,8.72,8.72,0,0,1-6.36,2.23,9.52,9.52,0,0,1-2.16-.18v8.14h-2.68Zm2.68,9.8a9.32,9.32,0,0,0,2.23.21c3.24,0,5.21-1.54,5.21-4.34s-1.94-4-4.9-4a11.68,11.68,0,0,0-2.54.21Z"
+ id="path50" />
+ <path
+ class="cls-10"
+ d="M595.8,744.27c0,5.4-3.83,7.75-7.44,7.75-4,0-7.16-2.89-7.16-7.51,0-4.88,3.27-7.75,7.41-7.75S595.8,739.81,595.8,744.27Zm-11.85.15c0,3.2,1.88,5.61,4.54,5.61s4.53-2.38,4.53-5.67c0-2.47-1.26-5.61-4.47-5.61S584,741.65,584,744.42Z"
+ id="path51" />
+ <path
+ class="cls-10"
+ d="M600.1,737.1l2,7.41c.43,1.63.84,3.14,1.11,4.65h.1c.34-1.48.83-3,1.32-4.62L607,737.1h2.29l2.31,7.29c.56,1.75,1,3.29,1.33,4.77h.09a44.65,44.65,0,0,1,1.14-4.74l2.13-7.32H619l-4.82,14.59h-2.47l-2.28-7a48.12,48.12,0,0,1-1.33-4.79h-.06a40.69,40.69,0,0,1-1.36,4.82l-2.41,6.94h-2.47l-4.5-14.59Z"
+ id="path52" />
+ <path
+ class="cls-10"
+ d="M623,744.87c.06,3.59,2.41,5.07,5.12,5.07a10.08,10.08,0,0,0,4.14-.75l.46,1.9a12.41,12.41,0,0,1-5,.9c-4.6,0-7.35-3-7.35-7.36s2.66-7.87,7-7.87c4.88,0,6.18,4.19,6.18,6.88a9.56,9.56,0,0,1-.1,1.23Zm8-1.89c0-1.69-.71-4.32-3.76-4.32-2.75,0-4,2.48-4.17,4.32Z"
+ id="path53" />
+ <path
+ class="cls-10"
+ d="M636.9,741.65c0-1.72,0-3.2-.12-4.55h2.38l.09,2.86h.12a4.48,4.48,0,0,1,4.14-3.2,3,3,0,0,1,.77.09v2.51a4.19,4.19,0,0,0-.93-.09,3.77,3.77,0,0,0-3.64,3.4,7.56,7.56,0,0,0-.12,1.24v7.78H636.9Z"
+ id="path54" />
+ <path
+ class="cls-10"
+ d="M648.2,744.87c.07,3.59,2.41,5.07,5.13,5.07a10.11,10.11,0,0,0,4.14-.75l.46,1.9a12.44,12.44,0,0,1-5,.9c-4.6,0-7.35-3-7.35-7.36s2.66-7.87,7-7.87c4.88,0,6.17,4.19,6.17,6.88a10,10,0,0,1-.09,1.23Zm8-1.89c0-1.69-.71-4.32-3.77-4.32-2.75,0-3.95,2.48-4.17,4.32Z"
+ id="path55" />
+ <path
+ class="cls-10"
+ d="M675.07,730.28v17.64c0,1.3,0,2.77.12,3.77h-2.44l-.12-2.53h-.07a5.55,5.55,0,0,1-5.09,2.86c-3.61,0-6.39-3-6.39-7.42,0-4.85,3.06-7.84,6.7-7.84a5.05,5.05,0,0,1,4.51,2.23h.06v-8.71ZM672.35,743a4.21,4.21,0,0,0-.13-1.11,4,4,0,0,0-3.91-3.08c-2.81,0-4.48,2.42-4.48,5.64,0,3,1.48,5.4,4.41,5.4a4.06,4.06,0,0,0,4-3.17,4.15,4.15,0,0,0,.13-1.14Z"
+ id="path56" />
+ <rect
+ class="cls-11"
+ x="561.8"
+ y="768.06"
+ width="65.15"
+ height="6.66"
+ rx="3.33"
+ id="rect56" />
+ <path
+ class="cls-12"
+ d="M784.42,219.19H419.9a39.73,39.73,0,0,0-39.74,39.73V838.6a39.74,39.74,0,0,0,39.74,39.73H784.42a39.73,39.73,0,0,0,39.73-39.73V258.92A39.73,39.73,0,0,0,784.42,219.19Zm31,619.41a31,31,0,0,1-31,31H419.9a31,31,0,0,1-31-31V258.92a31,31,0,0,1,31-31H784.42a31,31,0,0,1,31,31Z"
+ id="path57" />
+ <path
+ class="cls-12"
+ d="M824.15,260a67.74,67.74,0,0,1,32.06,36.41,16.78,16.78,0,0,1,1.09,5.87V633.56a7.53,7.53,0,0,1-1.75,4.84l-31.4,37.77"
+ id="path58" />
+ <path
+ class="cls-13"
+ d="M714.73,253.2s0,0,0,0l-.24,1-7.2,29a4.47,4.47,0,0,0,.7,3.69l.06.07a15.25,15.25,0,0,1-1.59-.42,9.75,9.75,0,0,1-3.94-2.24,6.35,6.35,0,0,1-1.63-6.06l.67-2.7L705,261.64h-4.77l-1.67,6.73c-.52,2.1-.6,3,.25,5a1.18,1.18,0,0,1,0,.25l-2.48-1.32a5.56,5.56,0,0,1-2.95-6.41l4.11-16.56a.09.09,0,0,0,0,0,4.73,4.73,0,0,0-.86-4.11l1.69.75.76.34a5.79,5.79,0,0,1,3.27,6.67l-1,4h4.76l2.07-8.35a4.52,4.52,0,0,0,0-2,6.32,6.32,0,0,0-1.17-2.68,13,13,0,0,1,2.1.71C711.81,245.69,715.73,248.21,714.73,253.2Z"
+ id="path59" />
+ <path
+ class="cls-14"
+ d="M724.83,258.46l-.59,2.36h5l-1.12,4.54h-5l-.76,3.06h5L726.25,273h-9.88l1.13-4.54.76-3.06,1.12-4.54.59-2.36.71-2.86a2.23,2.23,0,0,1,1.27-1.5h0a2.22,2.22,0,0,1,.87-.18H731l-1.13,4.54Z"
+ id="path60" />
+ <path
+ class="cls-14"
+ d="M765.52,258.46l-.59,2.36h5l-1.13,4.54h-5l-.76,3.06h5L766.94,273h-9.88l1.13-4.54.76-3.06,1.13-4.54.58-2.36.71-2.86a2.22,2.22,0,0,1,1.28-1.5h0a2.15,2.15,0,0,1,.87-.18h8.14l-1.13,4.54Z"
+ id="path61" />
+ <polygon
+ class="cls-14"
+ points="758.02 253.92 757.07 257.81 753.56 257.81 753.39 258.46 752.81 260.82 749.8 272.96 744.93 272.96 746.07 268.42 746.82 265.36 747.95 260.82 748.53 258.46 748.7 257.81 745.1 257.81 745.91 254.53 746.06 253.92 758.02 253.92"
+ id="polygon61" />
+ <polygon
+ class="cls-14"
+ points="741.13 268.42 740 272.96 730.13 272.96 731.26 268.42 732.01 265.36 733.14 260.82 733.73 258.46 734.7 254.53 734.85 253.92 739.71 253.92 738.59 258.46 738 260.82 736.12 268.42 741.13 268.42"
+ id="polygon62" />
+ <path
+ class="cls-14"
+ d="M788.73,255l-1.5,6.26a3.48,3.48,0,0,0-1.3-2.36c-1.86-1.4-4.88-.52-6.78,2s-1.92,5.66-.07,7.05,4.88.52,6.77-2c.15-.2.28-.4.41-.61l-1.73,7.24a7.65,7.65,0,0,1-6.77.91c-4.31-1.62-6.17-7.27-4.16-12.64C775.55,255.69,781.94,250.72,788.73,255Z"
+ id="path62" />
+ <path
+ class="cls-14"
+ d="M718.84,282.11h-2.13l-.55,1h-1.92l3.81-6.16h2.05l.76,6.16h-2Zm-.06-1.33-.12-2.22-1.21,2.22Z"
+ id="path63" />
+ <path
+ class="cls-14"
+ d="M726.65,277h1.88l-.91,3.67a3.57,3.57,0,0,1-.43,1,3.2,3.2,0,0,1-1.61,1.36,4.44,4.44,0,0,1-1.37.2,8.21,8.21,0,0,1-1-.06,2,2,0,0,1-.82-.25,1.53,1.53,0,0,1-.51-.53,1.47,1.47,0,0,1-.22-.71,3.41,3.41,0,0,1,.08-1l.91-3.67h1.87l-.93,3.75a1,1,0,0,0,.08.79.81.81,0,0,0,.7.29,1.32,1.32,0,0,0,.83-.28,1.4,1.4,0,0,0,.47-.8Z"
+ id="path64" />
+ <path
+ class="cls-14"
+ d="M729.34,277h5.72l-.38,1.52h-1.92l-1.15,4.64h-1.88l1.15-4.64H729Z"
+ id="path65" />
+ <path
+ class="cls-14"
+ d="M734.62,280.05A4.25,4.25,0,0,1,736,277.7a3.87,3.87,0,0,1,2.52-.84,2.49,2.49,0,0,1,2.13.83,2.69,2.69,0,0,1,.25,2.31,4.83,4.83,0,0,1-.8,1.77,3.77,3.77,0,0,1-1.3,1.08,3.93,3.93,0,0,1-1.79.38,3.32,3.32,0,0,1-1.62-.33,1.81,1.81,0,0,1-.83-1A3.25,3.25,0,0,1,734.62,280.05Zm1.87,0a1.91,1.91,0,0,0,0,1.34.89.89,0,0,0,.83.41,1.46,1.46,0,0,0,1-.4,3,3,0,0,0,.69-1.43,1.78,1.78,0,0,0,0-1.28.94.94,0,0,0-.85-.4,1.48,1.48,0,0,0-1,.41A2.67,2.67,0,0,0,736.49,280.06Z"
+ id="path66" />
+ <path
+ class="cls-14"
+ d="M742.67,277h2.47l0,3.75L747,277h2.47L748,283.13h-1.54l1.17-4.7-2.35,4.7h-1.39l0-4.7-1.17,4.7h-1.54Z"
+ id="path67" />
+ <path
+ class="cls-14"
+ d="M753.17,282.11H751l-.55,1h-1.92l3.82-6.16h2.05l.75,6.16h-2Zm-.06-1.33-.12-2.22-1.21,2.22Z"
+ id="path68" />
+ <path
+ class="cls-14"
+ d="M756.31,277H762l-.38,1.52h-1.92l-1.15,4.64h-1.88l1.16-4.64h-1.92Z"
+ id="path69" />
+ <path
+ class="cls-14"
+ d="M762.94,277h1.89l-1.53,6.16h-1.89Z"
+ id="path70" />
+ <path
+ class="cls-14"
+ d="M765.17,280.05a4.21,4.21,0,0,1,1.42-2.35,3.86,3.86,0,0,1,2.51-.84,2.5,2.5,0,0,1,2.14.83,2.69,2.69,0,0,1,.25,2.31,4.83,4.83,0,0,1-.8,1.77,3.8,3.8,0,0,1-1.31,1.08,3.89,3.89,0,0,1-1.78.38,3.32,3.32,0,0,1-1.62-.33,1.77,1.77,0,0,1-.83-1A3.23,3.23,0,0,1,765.17,280.05Zm1.88,0a1.91,1.91,0,0,0,0,1.34.89.89,0,0,0,.83.41,1.47,1.47,0,0,0,1-.4,3,3,0,0,0,.68-1.43,1.68,1.68,0,0,0,0-1.28.91.91,0,0,0-.84-.4,1.47,1.47,0,0,0-1,.41A2.67,2.67,0,0,0,767.05,280.06Z"
+ id="path71" />
+ <path
+ class="cls-14"
+ d="M773.26,277H775l1.44,3.41.85-3.41h1.77l-1.53,6.16h-1.77l-1.44-3.39-.84,3.39h-1.77Z"
+ id="path72" />
+ </g>
+</svg>
diff --git a/core/resources/src/commonMain/composeResources/files/muzi_r1_neo.svg b/core/resources/src/commonMain/composeResources/files/muzi_r1_neo.svg
new file mode 100644
index 0000000000..2f2cb0bf4a
--- /dev/null
+++ b/core/resources/src/commonMain/composeResources/files/muzi_r1_neo.svg
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ viewBox="0 0 217.61 761.78589"
+ version="1.1"
+ id="svg15"
+ sodipodi:docname="buyer benmeshtastic-01 (6).svg"
+ width="217.61"
+ height="761.78589"
+ inkscape:version="1.4 (e7c3feb1, 2024-10-09)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview
+ id="namedview15"
+ pagecolor="#ffffff"
+ bordercolor="#000000"
+ borderopacity="0.25"
+ inkscape:showpageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1"
+ inkscape:zoom="1.0249904"
+ inkscape:cx="-4.3902849"
+ inkscape:cy="683.42102"
+ inkscape:window-width="1472"
+ inkscape:window-height="890"
+ inkscape:window-x="0"
+ inkscape:window-y="38"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg15" />
+ <defs
+ id="defs1">
+ <style
+ id="style1">.cls-1{fill:#9a4451;}.cls-2{fill:#5b232b;}.cls-3{fill:#eadadb;}.cls-4{fill:#191919;}.cls-5{fill:#1f2020;}.cls-6{fill:#353535;}.cls-7{fill:#8b3944;}.cls-8{fill:#2a2a2a;}.cls-9{fill:none;stroke:#000;stroke-miterlimit:10;stroke-width:0.95px;}</style>
+ </defs>
+ <g
+ id="Layer_3"
+ data-name="Layer 3"
+ transform="translate(-407.715,-82.379135)">
+ <path
+ class="cls-1"
+ d="m 617.2,633.34 v 21.18 a 5.74,5.74 0 0 1 -11.48,0 v -14.38 l -50,26.45 -1,2.9 1,1.54 0.08,137.28 -0.05,2.08 69.19,-13 V 628.81 Z"
+ id="path1" />
+ <path
+ class="cls-2"
+ d="m 624.85,628.49 v 0.32 l -7.65,4.53 v -1.79 a 5.74,5.74 0 0 0 -11.48,0 v 8.59 l -47.72,28.13 -90.13,48.82 -13.82,92.52 -17.26,0.38 -28.6,-8.44 v -85.47 a 9.33,9.33 0 0 1 1,-4.12 l 19.64,-40 a 8.71,8.71 0 0 1 0.85,-1.4 l 5.13,-7 0.11,-0.82 11,-14.53 v 0 l 5.36,-7.05 h -0.11 l 3.37,-4.6 20.46,-28.15 a 9.35,9.35 0 0 1 5,-3.51 l 5.46,7.23 a 4.65,4.65 0 0 0 3.69,1.83 h 32.07 a 4.62,4.62 0 0 0 3.6,-1.72 l 6.19,-7.68 h 69.87 a 23.93,23.93 0 0 1 23.97,23.93 z"
+ id="path2" />
+ <path
+ class="cls-2"
+ d="m 451.29,641.14 -5.36,7.05 v 0 c -0.13,-0.13 0.33,-0.73 0.33,-0.73 l 5,-6.32 z"
+ id="path3" />
+ <path
+ class="cls-2"
+ d="m 531.05,604.56 -6.19,7.68 a 4.62,4.62 0 0 1 -3.6,1.72 h -32.07 a 4.65,4.65 0 0 1 -3.69,-1.83 L 480,604.9 a 9.41,9.41 0 0 1 2.49,-0.34 z"
+ id="path4" />
+ <path
+ class="cls-3"
+ d="m 531.05,604.56 -6.19,7.68 a 4.62,4.62 0 0 1 -3.6,1.72 h -32.07 a 4.65,4.65 0 0 1 -3.69,-1.83 L 480,604.9 a 9.41,9.41 0 0 1 2.49,-0.34 z"
+ id="path5" />
+ <path
+ class="cls-4"
+ d="m 462.31,618.89 v 7 l -12.15,16.71 -11.08,15.2 -10.29,14.2 v -48.63 l 5.51,-37.49 a 2.21,2.21 0 0 1 2.18,-1.88 h 17.73 a 2.21,2.21 0 0 1 2.17,1.81 z"
+ id="path6" />
+ <polygon
+ class="cls-5"
+ points="436.48,584 436.48,125.69 454.02,125.58 454.02,584 "
+ id="polygon6" />
+ <path
+ class="cls-4"
+ d="m 456.2,92.91 c 0,0.12 0,0.23 0,0.35 L 455.05,125 a 0.82,0.82 0 0 1 -0.82,0.78 h -18.14 a 0.81,0.81 0 0 1 -0.81,-0.79 l -1,-31.68 a 9.78,9.78 0 0 1 5.05,-8.88 h 0.08 a 12.08,12.08 0 0 1 11.77,0 9.78,9.78 0 0 1 5.02,8.48 z"
+ id="path7" />
+ <polygon
+ class="cls-6"
+ points="439.08,657.8 439.08,584 450.16,584 450.16,642.56 "
+ id="polygon7" />
+ <path
+ class="cls-6"
+ d="m 448.65,93 v 32.7 h -6.37 V 93 a 3.19,3.19 0 0 1 3.19,-3.19 3.15,3.15 0 0 1 2.25,0.94 3.18,3.18 0 0 1 0.93,2.25 z"
+ id="path8" />
+ <path
+ class="cls-7"
+ d="M 555.75,675.9 V 843.69 H 439.42 V 677 a 27.34,27.34 0 0 1 27.34,-27.34 h 62.75 a 26.24,26.24 0 0 1 26.24,26.24 z"
+ id="path9" />
+ <path
+ class="cls-8"
+ d="m 624.85,797.42 v 22.34 a 23.93,23.93 0 0 1 -23.93,23.93 h -168.8 a 23.93,23.93 0 0 1 -23.93,-23.93 v -18.21 l 31.25,8.45 h 118.62 z"
+ id="path10" />
+ </g>
+ <g
+ id="Layer_2"
+ data-name="Layer 2"
+ transform="translate(-407.715,-82.379135)">
+ <path
+ class="cls-9"
+ d="m 624.85,628.49 v 191.27 a 23.94,23.94 0 0 1 -23.93,23.93 H 432.12 A 23.93,23.93 0 0 1 408.19,819.76 V 716.08 a 9.46,9.46 0 0 1 0.95,-4.12 l 19.65,-40 a 8.38,8.38 0 0 1 0.85,-1.41 l 24.91,-34 20.45,-28.14 a 9.35,9.35 0 0 1 7.56,-3.85 h 118.36 a 23.93,23.93 0 0 1 23.93,23.93 z"
+ id="path11" />
+ <rect
+ class="cls-9"
+ x="605.71997"
+ y="625.81"
+ width="11.49"
+ height="34.459999"
+ rx="5.7399998"
+ id="rect11" />
+ <polyline
+ class="cls-9"
+ points="408.19 801.55 439.44 809.97 439.44 809.97 555.79 810.09 555.79 810.09 624.85 797.42"
+ id="polyline11" />
+ <path
+ class="cls-9"
+ d="m 480,604.9 5.46,7.23 a 4.65,4.65 0 0 0 3.69,1.83 h 32.07 a 4.59,4.59 0 0 0 3.59,-1.72 l 6.2,-7.68"
+ id="path12" />
+ <path
+ class="cls-9"
+ d="m 428.79,672 v -48.63 l 5.51,-37.49 a 2.21,2.21 0 0 1 2.18,-1.88 h 17.73 a 2.19,2.19 0 0 1 2.16,1.81 l 5.94,33.08 v 7"
+ id="path13" />
+ <line
+ class="cls-9"
+ x1="436.48001"
+ y1="584"
+ x2="436.48001"
+ y2="125.69"
+ id="line13" />
+ <line
+ class="cls-9"
+ x1="454.01999"
+ y1="584"
+ x2="454.01999"
+ y2="125.58"
+ id="line14" />
+ <path
+ class="cls-9"
+ d="m 454.23,125.73 h -18.14 a 0.82,0.82 0 0 1 -0.82,-0.79 l -1,-31.69 a 9.78,9.78 0 0 1 5,-8.87 h 0.09 a 12.11,12.11 0 0 1 11.77,0 v 0 a 9.81,9.81 0 0 1 5,8.91 l -1.14,31.68 a 0.82,0.82 0 0 1 -0.76,0.76 z"
+ id="path14" />
+ <path
+ class="cls-9"
+ d="M 555.75,843.69 V 675.9 A 26.24,26.24 0 0 0 529.51,649.66 H 466.76 A 27.34,27.34 0 0 0 439.42,677 v 166.69"
+ id="path15" />
+ </g>
+</svg>
diff --git a/core/resources/src/commonMain/composeResources/files/rak_wismesh_tag.svg b/core/resources/src/commonMain/composeResources/files/rak_wismesh_tag.svg
new file mode 100644
index 0000000000..2e4ac8741f
--- /dev/null
+++ b/core/resources/src/commonMain/composeResources/files/rak_wismesh_tag.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="362.69 217.36 380.66 583.34"><defs><style>.cls-1{fill:#212121;}.cls-2{fill:#181918;}.cls-3,.cls-4,.cls-5,.cls-7,.cls-8{fill:none;stroke:#08090a;stroke-miterlimit:10;}.cls-3{stroke-width:2px;}.cls-4{stroke-width:2px;}.cls-5{stroke-width:0.5px;}.cls-6{fill:#08090a;}.cls-7{stroke-width:0.75px;}.cls-8{stroke-width:0.51px;}.cls-9{fill:#f0e963;}.cls-10{fill:#878a8f;}</style></defs><g id="Layer_5" data-name="Layer 5"><path class="cls-1" d="M702.93,218.36H403.4l-39.73,39.73V788.4A11.31,11.31,0,0,0,375,799.7H731a11.31,11.31,0,0,0,11.31-11.3V257.78ZM505.74,234.54a10.86,10.86,0,0,1,7.71-3.2h78.63a10.91,10.91,0,1,1,0,21.82H513.45a10.91,10.91,0,0,1-7.71-18.62Zm220.82,539.3a14.47,14.47,0,0,1-14.47,14.47H392.75a14.46,14.46,0,0,1-14.46-14.47v-493a14.45,14.45,0,0,1,14.46-14.46H712.09a14.46,14.46,0,0,1,14.47,14.46Z"/><path class="cls-1" d="M726.56,280.81v493a14.47,14.47,0,0,1-14.47,14.47H392.75a14.46,14.46,0,0,1-14.46-14.47v-493a14.45,14.45,0,0,1,14.46-14.46H712.09A14.46,14.46,0,0,1,726.56,280.81Z"/><circle class="cls-2" cx="553.42" cy="447.02" r="69.8"/><rect class="cls-3" x="378.29" y="266.35" width="348.27" height="521.96" rx="14.46"/><path class="cls-4" d="M742.35,257.78V788.4A11.31,11.31,0,0,1,731,799.7H375a11.31,11.31,0,0,1-11.31-11.3V258.09l39.73-39.73H702.93Z"/><rect class="cls-4" x="502.55" y="231.34" width="100.44" height="21.81" rx="10.91"/><circle class="cls-2" cx="518.58" cy="435.63" r="4.11"/><circle class="cls-5" cx="518.58" cy="435.63" r="4.11"/><circle class="cls-6" cx="518.58" cy="435.63" r="2.62"/><circle class="cls-2" cx="541" cy="435.63" r="4.11"/><circle class="cls-5" cx="541" cy="435.63" r="4.11"/><circle class="cls-6" cx="541" cy="435.63" r="2.62"/><circle class="cls-2" cx="563.43" cy="435.63" r="4.11"/><circle class="cls-5" cx="563.43" cy="435.63" r="4.11"/><circle class="cls-6" cx="563.43" cy="435.63" r="2.62"/><circle class="cls-2" cx="585.85" cy="435.63" r="4.11"/><circle class="cls-5" cx="585.85" cy="435.63" r="4.11"/><circle class="cls-6" cx="585.85" cy="435.63" r="2.62"/><circle class="cls-2" cx="530.35" cy="447.02" r="4.11"/><circle class="cls-5" cx="530.35" cy="447.02" r="4.11"/><circle class="cls-6" cx="530.35" cy="447.02" r="2.62"/><circle class="cls-2" cx="552.78" cy="447.02" r="4.11"/><circle class="cls-5" cx="552.78" cy="447.02" r="4.11"/><circle class="cls-6" cx="552.78" cy="447.02" r="2.62"/><circle class="cls-2" cx="575.2" cy="447.02" r="4.11"/><circle class="cls-5" cx="575.2" cy="447.02" r="4.11"/><circle class="cls-6" cx="575.2" cy="447.02" r="2.62"/><circle class="cls-2" cx="542.13" cy="458.42" r="4.11"/><circle class="cls-5" cx="542.13" cy="458.42" r="4.11"/><circle class="cls-6" cx="542.13" cy="458.42" r="2.62"/><circle class="cls-2" cx="564.56" cy="458.42" r="4.11"/><circle class="cls-5" cx="564.56" cy="458.42" r="4.11"/><circle class="cls-6" cx="564.56" cy="458.42" r="2.62"/><circle class="cls-2" cx="586.98" cy="458.42" r="4.11"/><circle class="cls-5" cx="586.98" cy="458.42" r="4.11"/><circle class="cls-6" cx="586.98" cy="458.42" r="2.62"/><circle class="cls-2" cx="553.91" cy="469.81" r="4.11"/><circle class="cls-5" cx="553.91" cy="469.81" r="4.11"/><circle class="cls-6" cx="553.91" cy="469.81" r="2.62"/><circle class="cls-2" cx="518.88" cy="458.49" r="4.11"/><circle class="cls-5" cx="518.88" cy="458.49" r="4.11"/><circle class="cls-6" cx="518.88" cy="458.49" r="2.62"/><circle class="cls-2" cx="530.66" cy="469.89" r="4.11"/><circle class="cls-5" cx="530.66" cy="469.89" r="4.11"/><circle class="cls-6" cx="530.66" cy="469.89" r="2.62"/><circle class="cls-2" cx="542.44" cy="481.28" r="4.11"/><circle class="cls-5" cx="542.44" cy="481.28" r="4.11"/><circle class="cls-6" cx="542.44" cy="481.28" r="2.62"/><circle class="cls-2" cx="576.33" cy="469.81" r="4.11"/><circle class="cls-5" cx="576.33" cy="469.81" r="4.11"/><circle class="cls-6" cx="576.33" cy="469.81" r="2.62"/><circle class="cls-2" cx="541.23" cy="412.84" r="4.11"/><circle class="cls-5" cx="541.23" cy="412.84" r="4.11"/><circle class="cls-6" cx="541.23" cy="412.84" r="2.62"/><circle class="cls-2" cx="563.66" cy="412.84" r="4.11"/><circle class="cls-5" cx="563.66" cy="412.84" r="4.11"/><circle class="cls-6" cx="563.66" cy="412.84" r="2.62"/><circle class="cls-2" cx="565.69" cy="481.2" r="4.11"/><circle class="cls-5" cx="565.69" cy="481.2" r="4.11"/><circle class="cls-6" cx="565.69" cy="481.2" r="2.62"/><circle class="cls-2" cx="530.59" cy="424.24" r="4.11"/><circle class="cls-5" cx="530.59" cy="424.24" r="4.11"/><circle class="cls-6" cx="530.59" cy="424.24" r="2.62"/><circle class="cls-2" cx="553.01" cy="424.24" r="4.11"/><circle class="cls-5" cx="553.01" cy="424.24" r="4.11"/><circle class="cls-6" cx="553.01" cy="424.24" r="2.62"/><circle class="cls-2" cx="575.44" cy="424.24" r="4.11"/><circle class="cls-5" cx="575.44" cy="424.24" r="4.11"/><circle class="cls-6" cx="575.44" cy="424.24" r="2.62"/><circle class="cls-7" cx="553.42" cy="447.02" r="69.8"/><circle class="cls-8" cx="553.42" cy="447.02" r="64.65"/><circle class="cls-8" cx="553.42" cy="447.02" r="61.02"/><circle class="cls-8" cx="553.42" cy="447.02" r="60.17"/><circle class="cls-8" cx="553.42" cy="447.02" r="56.38"/><circle class="cls-7" cx="553.42" cy="447.02" r="53.5"/><circle class="cls-8" cx="553.42" cy="447.02" r="44.95"/><circle class="cls-9" cx="658.42" cy="421.81" r="6.12"/><circle class="cls-9" cx="658.42" cy="438.9" r="6.12"/><circle class="cls-9" cx="658.42" cy="455.99" r="6.12"/><circle class="cls-9" cx="658.42" cy="473.09" r="6.12"/><rect class="cls-10" x="516.59" y="300.46" width="16.46" height="16.46" rx="2.25"/><circle class="cls-10" cx="552.43" cy="308.69" r="8.38"/><path class="cls-10" d="M570.94,312.63l7.29-11.26a1.55,1.55,0,0,1,2.64,0l6.76,11.29a2.4,2.4,0,0,1-2.06,3.63H573A2.39,2.39,0,0,1,570.94,312.63Z"/></g></svg>
\ No newline at end of file
diff --git a/core/resources/src/commonMain/composeResources/files/station-g2.svg b/core/resources/src/commonMain/composeResources/files/station-g2.svg
new file mode 100644
index 0000000000..8d2e0aed2e
--- /dev/null
+++ b/core/resources/src/commonMain/composeResources/files/station-g2.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="340.47 223.69 263.8 485.94"><defs><style>.cls-1{fill:#434143;}.cls-2,.cls-6,.cls-7{fill:none;}.cls-2{stroke:#050606;stroke-miterlimit:10;}.cls-3{fill:#2b2b2b;}.cls-4{fill:#181818;}.cls-5{fill:#e8eae8;}.cls-6,.cls-7{stroke:#e8eae8;stroke-linecap:round;stroke-linejoin:round;}.cls-7{stroke-width:2px;}.cls-8{fill:#b1a368;}</style></defs><g id="Layer_2" data-name="Layer 2"><rect class="cls-1" x="340.97" y="258.81" width="262.8" height="450.32" rx="27.43"></rect><rect class="cls-2" x="340.97" y="258.81" width="262.8" height="450.32" rx="27.43"></rect><circle class="cls-3" cx="364.66" cy="281.32" r="10.92"></circle><circle class="cls-2" cx="364.66" cy="281.32" r="10.92"></circle><path class="cls-4" d="M372.05,281.32a2.39,2.39,0,0,1-2.39,2.38h-2.61v2.62a2.38,2.38,0,1,1-4.76,0V283.7h-2.63a2.39,2.39,0,1,1,0-4.77h2.63v-2.62a2.38,2.38,0,0,1,2.37-2.38,2.39,2.39,0,0,1,2.39,2.38v2.62h2.61A2.4,2.4,0,0,1,372.05,281.32Z"></path><circle class="cls-3" cx="579.41" cy="281.32" r="10.92"></circle><circle class="cls-2" cx="579.41" cy="281.32" r="10.92"></circle><path class="cls-4" d="M586.79,281.32a2.39,2.39,0,0,1-2.38,2.38h-2.62v2.62a2.38,2.38,0,1,1-4.76,0V283.7h-2.62a2.39,2.39,0,1,1,0-4.77H577v-2.62a2.38,2.38,0,0,1,4.76,0v2.62h2.62A2.39,2.39,0,0,1,586.79,281.32Z"></path><circle class="cls-3" cx="364.66" cy="683.91" r="10.92"></circle><circle class="cls-2" cx="364.66" cy="683.91" r="10.92"></circle><path class="cls-4" d="M372.05,683.92a2.39,2.39,0,0,1-2.39,2.38h-2.61v2.62a2.38,2.38,0,1,1-4.76,0V686.3h-2.63a2.39,2.39,0,1,1,0-4.77h2.63v-2.62a2.38,2.38,0,0,1,2.37-2.38,2.39,2.39,0,0,1,2.39,2.38v2.62h2.61A2.4,2.4,0,0,1,372.05,683.92Z"></path><circle class="cls-3" cx="579.41" cy="683.91" r="10.92"></circle><circle class="cls-2" cx="579.41" cy="683.91" r="10.92"></circle><path class="cls-4" d="M586.79,683.92a2.39,2.39,0,0,1-2.38,2.38h-2.62v2.62a2.38,2.38,0,0,1-4.76,0V686.3h-2.62a2.39,2.39,0,1,1,0-4.77H577v-2.62a2.38,2.38,0,0,1,4.76,0v2.62h2.62A2.39,2.39,0,0,1,586.79,683.92Z"></path><circle class="cls-3" cx="561.1" cy="512.26" r="10.92"></circle><circle class="cls-2" cx="561.1" cy="512.26" r="10.92"></circle><path class="cls-4" d="M568.49,512.26a2.39,2.39,0,0,1-2.38,2.38h-2.62v2.62a2.38,2.38,0,1,1-4.76,0v-2.62h-2.62a2.39,2.39,0,1,1,0-4.77h2.62v-2.62a2.38,2.38,0,0,1,4.76,0v2.62h2.62A2.39,2.39,0,0,1,568.49,512.26Z"></path><circle class="cls-3" cx="478.84" cy="406.37" r="10.92"></circle><circle class="cls-2" cx="478.84" cy="406.37" r="10.92"></circle><path class="cls-4" d="M486.22,406.37a2.39,2.39,0,0,1-2.38,2.38h-2.62v2.62a2.38,2.38,0,1,1-4.76,0v-2.62h-2.62a2.39,2.39,0,1,1,0-4.77h2.62v-2.62a2.38,2.38,0,0,1,4.76,0V404h2.62A2.39,2.39,0,0,1,486.22,406.37Z"></path><rect class="cls-3" x="380.01" y="302.06" width="5.45" height="72.48" rx="1.75"></rect><rect class="cls-3" x="399.24" y="302.06" width="5.45" height="72.48" rx="1.75"></rect><rect class="cls-3" x="418.47" y="302.06" width="5.45" height="72.48" rx="1.75"></rect><rect class="cls-5" x="442.52" y="443.28" width="6.5" height="54.62" transform="translate(348.12 -170.22) rotate(34.78)"></rect><path class="cls-5" d="M521.39,490.76l-5.34,3.71L489,455.92,462,494.9l-5.34-3.71,28.32-41,1.06-1.53a3.53,3.53,0,0,1,5.8,0l1.06,1.53Z"></path><rect class="cls-3" x="437.7" y="302.06" width="5.45" height="72.48" rx="1.75"></rect><rect class="cls-3" x="492.51" y="302.06" width="5.45" height="72.48" rx="1.75"></rect><rect class="cls-3" x="511.74" y="302.06" width="5.45" height="72.48" rx="1.75"></rect><rect class="cls-3" x="530.97" y="302.06" width="5.45" height="72.48" rx="1.75"></rect><rect class="cls-3" x="550.2" y="302.06" width="5.45" height="72.48" rx="1.75"></rect><rect class="cls-3" x="465.19" y="302.06" width="5.45" height="72.48" rx="1.75"></rect><path class="cls-5" d="M420.79,519.77l4-.25a3.13,3.13,0,0,0,.53,1.48,2.21,2.21,0,0,0,1.85.82,2,2,0,0,0,1.38-.42,1.24,1.24,0,0,0,.49-1,1.29,1.29,0,0,0-.46-.95,5.44,5.44,0,0,0-2.15-.78,9.1,9.1,0,0,1-3.93-1.65,3.31,3.31,0,0,1-1.19-2.62,3.59,3.59,0,0,1,.61-2,4,4,0,0,1,1.82-1.46,8.43,8.43,0,0,1,3.34-.54,6.85,6.85,0,0,1,4,1,4.17,4.17,0,0,1,1.62,3.08l-3.95.23a2.06,2.06,0,0,0-.66-1.33,2.1,2.1,0,0,0-1.39-.42,1.66,1.66,0,0,0-1.1.31,1,1,0,0,0-.37.75.76.76,0,0,0,.31.59,3.42,3.42,0,0,0,1.4.5,17.67,17.67,0,0,1,3.94,1.19,4.19,4.19,0,0,1,1.73,1.51,3.8,3.8,0,0,1,.54,2,4.31,4.31,0,0,1-.72,2.41,4.57,4.57,0,0,1-2,1.67,8.13,8.13,0,0,1-3.27.57c-2.3,0-3.9-.45-4.79-1.33A5.26,5.26,0,0,1,420.79,519.77Z"></path><path class="cls-5" d="M439.49,510.7v3.73h2.07v2.76h-2.07v3.48a1.85,1.85,0,0,0,.12.83.69.69,0,0,0,.65.32,4.09,4.09,0,0,0,1.16-.24l.28,2.59a11.86,11.86,0,0,1-2.61.31,4.54,4.54,0,0,1-2.07-.36,2.2,2.2,0,0,1-1-1.1,6.25,6.25,0,0,1-.32-2.37v-3.46h-1.39v-2.76h1.39v-1.8Z"></path><path class="cls-5" d="M446.79,517.62l-3.6-.38a4.06,4.06,0,0,1,.59-1.49,3.23,3.23,0,0,1,1.1-.94,4.57,4.57,0,0,1,1.43-.44,11,11,0,0,1,2-.16,15.27,15.27,0,0,1,2.72.19,3.56,3.56,0,0,1,1.71.79,2.84,2.84,0,0,1,.76,1.18,4.43,4.43,0,0,1,.28,1.46v4.34a5.16,5.16,0,0,0,.08,1.08,4.81,4.81,0,0,0,.39,1h-3.54a3.68,3.68,0,0,1-.27-.58,3.18,3.18,0,0,1-.13-.63,4.9,4.9,0,0,1-1.47,1,6.18,6.18,0,0,1-2.33.41,3.86,3.86,0,0,1-2.66-.81,2.76,2.76,0,0,1-.26-3.85,4.52,4.52,0,0,1,2.42-1.08c1.42-.28,2.33-.48,2.75-.59s.86-.27,1.33-.45a1.32,1.32,0,0,0-.28-1,1.42,1.42,0,0,0-1-.28,2.59,2.59,0,0,0-1.39.3A1.6,1.6,0,0,0,446.79,517.62Zm3.26,2c-.51.18-1.05.34-1.62.49a3.72,3.72,0,0,0-1.45.6,1,1,0,0,0,0,1.42,1.34,1.34,0,0,0,.91.28,2.28,2.28,0,0,0,1.17-.31,1.84,1.84,0,0,0,.77-.74,2.49,2.49,0,0,0,.22-1.14Z"></path><path class="cls-5" d="M460.21,510.7v3.73h2.07v2.76h-2.07v3.48a1.85,1.85,0,0,0,.12.83.69.69,0,0,0,.65.32,4.09,4.09,0,0,0,1.16-.24l.28,2.59a11.86,11.86,0,0,1-2.61.31,4.57,4.57,0,0,1-2.07-.36,2.2,2.2,0,0,1-1-1.1,6.25,6.25,0,0,1-.32-2.37v-3.46h-1.39v-2.76h1.39v-1.8Z"></path><path class="cls-5" d="M464.22,510.7H468v2.56h-3.76Zm0,3.73H468v9.83h-3.76Z"></path><path class="cls-5" d="M469.92,519.37a4.91,4.91,0,0,1,1.52-3.7,6.58,6.58,0,0,1,8.56.25,5.36,5.36,0,0,1-.29,7.11,5.74,5.74,0,0,1-4.16,1.45,5.83,5.83,0,0,1-3.83-1.2A4.84,4.84,0,0,1,469.92,519.37Zm3.78,0a3,3,0,0,0,.53,1.95,1.74,1.74,0,0,0,2.67,0,3.08,3.08,0,0,0,.53-2,2.89,2.89,0,0,0-.53-1.9,1.64,1.64,0,0,0-1.31-.63,1.67,1.67,0,0,0-1.35.64A2.89,2.89,0,0,0,473.7,519.36Z"></path><path class="cls-5" d="M483,514.43h3.51V516a5.16,5.16,0,0,1,1.59-1.4,4.2,4.2,0,0,1,2-.42,3.23,3.23,0,0,1,2.45.93,4,4,0,0,1,.88,2.87v6.25h-3.78v-5.41a2,2,0,0,0-.34-1.3,1.22,1.22,0,0,0-1-.39,1.37,1.37,0,0,0-1.11.52,3.07,3.07,0,0,0-.42,1.86v4.72H483Z"></path><path class="cls-5" d="M509,519.35v-2.83h6.48v5.79a13.27,13.27,0,0,1-3.29,1.72,11,11,0,0,1-3.39.46,8.38,8.38,0,0,1-3.94-.82,5.6,5.6,0,0,1-2.35-2.46,8,8,0,0,1-.84-3.73,7.85,7.85,0,0,1,.91-3.87,6,6,0,0,1,2.69-2.49,8.68,8.68,0,0,1,3.71-.66,10.45,10.45,0,0,1,3.36.41,4.37,4.37,0,0,1,1.85,1.26,5.63,5.63,0,0,1,1.1,2.17l-4,.73a2.16,2.16,0,0,0-.84-1.18,2.68,2.68,0,0,0-1.53-.41,2.72,2.72,0,0,0-2.19,1,4.59,4.59,0,0,0-.82,3,4.72,4.72,0,0,0,.83,3.15,2.93,2.93,0,0,0,2.3.94,4.64,4.64,0,0,0,1.35-.2,7.55,7.55,0,0,0,1.46-.7v-1.27Z"></path><path class="cls-5" d="M528.42,524.26h-11.3a7,7,0,0,1,1.18-3.15,16,16,0,0,1,3.69-3.49,11.11,11.11,0,0,0,2.12-1.86,2.11,2.11,0,0,0,.47-1.22,1.42,1.42,0,0,0-.46-1,1.58,1.58,0,0,0-1.15-.44,1.61,1.61,0,0,0-1.18.45,2.75,2.75,0,0,0-.62,1.6l-3.77-.31a6,6,0,0,1,.81-2.48,3.85,3.85,0,0,1,1.67-1.37,7.49,7.49,0,0,1,3-.48,8.47,8.47,0,0,1,3.1.46,3.71,3.71,0,0,1,2.37,3.5,4.32,4.32,0,0,1-.72,2.36,9.93,9.93,0,0,1-2.65,2.48c-.75.53-1.26.89-1.52,1.1s-.55.49-.9.83h5.88Z"></path><rect class="cls-3" x="407.64" y="558.27" width="135.85" height="67.27" rx="3.52"></rect><rect class="cls-2" x="407.64" y="558.27" width="135.85" height="67.27" rx="3.52"></rect><circle class="cls-6" cx="586.93" cy="513.44" r="9.9"></circle><rect class="cls-5" x="581.12" y="512.62" width="9.09" height="1.63" rx="0.82"></rect><circle class="cls-5" cx="591.91" cy="513.44" r="0.83"></circle><path class="cls-5" d="M595.54,604.4v-2a3.26,3.26,0,0,0-3.27-3.27H579.86a3.26,3.26,0,0,0-3.27,3.27v14.63a3.26,3.26,0,0,0,3.27,3.27h12.41a3.26,3.26,0,0,0,3.27-3.27v-1.57h-6.38V604.4ZM584,615.49h-5.05V604.4H584Z"></path><rect class="cls-5" x="592.44" y="610.44" width="4.83" height="3.64" rx="0.91"></rect><path class="cls-7" d="M579,655.86a9.88,9.88,0,0,0,15.29-1"></path><path class="cls-7" d="M595.57,652.31a9.9,9.9,0,1,0-19.26-3.19"></path><polygon class="cls-5" points="571.82 649.11 580.81 649.11 576.5 653.13 571.82 649.11"></polygon><path class="cls-6" d="M513.83,395.84l-10,18.22a1.21,1.21,0,0,0,1.06,1.79H525a1.21,1.21,0,0,0,1.06-1.8L516,395.83A1.21,1.21,0,0,0,513.83,395.84Z"></path><line class="cls-6" x1="508.31" y1="412.99" x2="521.75" y2="412.99"></line><path class="cls-6" d="M511.9,411.29s1.88-2,.68-3.24-2.34-2.69-.68-4.1"></path><path class="cls-6" d="M514.9,411.29s1.88-2,.69-3.24-2.35-2.69-.69-4.1"></path><path class="cls-6" d="M517.91,411.29s1.87-2,.68-3.24-2.35-2.69-.68-4.1"></path><rect class="cls-8" x="497.97" y="253.53" width="25.55" height="5.28"></rect><path class="cls-8" d="M502.42,224.19h17a1.73,1.73,0,0,1,1.73,1.73v27.61a0,0,0,0,1,0,0H500.69a0,0,0,0,1,0,0V225.92A1.73,1.73,0,0,1,502.42,224.19Z"></path><rect class="cls-8" x="497.97" y="230.25" width="25.55" height="19.98" rx="1.55"></rect><rect class="cls-2" x="497.97" y="253.53" width="25.55" height="5.28"></rect><path class="cls-2" d="M521.11,225.92v4.33H500.68v-4.33a1.73,1.73,0,0,1,1.74-1.73h16.95A1.73,1.73,0,0,1,521.11,225.92Z"></path><rect class="cls-2" x="500.68" y="250.22" width="20.43" height="3.31"></rect><path class="cls-2" d="M523.51,231.8v16.87a1.54,1.54,0,0,1-1.55,1.55H499.52a1.55,1.55,0,0,1-1.56-1.55V231.8a1.55,1.55,0,0,1,1.56-1.55H522A1.54,1.54,0,0,1,523.51,231.8Z"></path><path class="cls-5" d="M382.68,266.74H383c.17,0,.27.07.28.19l.31,3.68c0,.35.11.53.18.53s.2-.17.31-.5l.34-1a.2.2,0,0,1,.2-.11.23.23,0,0,1,.2.11l.33,1c.11.33.21.5.29.5s.15-.18.18-.53l.32-3.68c0-.12.1-.19.28-.19h.38c.18,0,.28.08.28.21l-.55,6.79c0,.12-.12.19-.29.19h-.45c-.14,0-.26-.06-.28-.16l-.42-1.45c-.09-.28-.19-.43-.28-.43s-.19.15-.27.43l-.41,1.45c0,.1-.14.16-.29.16h-.46c-.17,0-.27-.07-.28-.19l-.55-6.79C382.39,266.82,382.5,266.74,382.68,266.74Z"></path><path class="cls-5" d="M390.76,273.76l-.28-1.33c0-.11-.14-.17-.28-.17h-1.29a.27.27,0,0,0-.28.17l-.26,1.33a.29.29,0,0,1-.29.17h-.34c-.19,0-.29-.07-.29-.19a1.58,1.58,0,0,1,0-.21l1.42-6.62c0-.11.14-.17.28-.17h.75c.14,0,.26.06.28.17l1.41,6.62a1.58,1.58,0,0,1,0,.21c0,.12-.11.19-.29.19h-.33A.28.28,0,0,1,390.76,273.76Zm-1.21-5c-.1,0-.19.2-.28.6l-.36,1.78a1,1,0,0,0,0,.24c0,.11.1.18.27.18H390c.16,0,.28-.06.28-.18a1,1,0,0,0,0-.24l-.37-1.78C389.75,269,389.66,268.78,389.55,268.78Z"></path><path class="cls-5" d="M393.2,273.93h-.4c-.16,0-.28-.08-.28-.2v-6.79c0-.12.12-.2.28-.2h1.68c1,0,1.91.52,1.91,1.54v.78a1.42,1.42,0,0,1-.85,1.32.19.19,0,0,0-.13.19.49.49,0,0,0,0,.15l.87,2.69a1.13,1.13,0,0,1,.09.33c0,.12-.09.19-.28.19h-.41c-.15,0-.26-.06-.29-.16l-.93-3c0-.09-.14-.15-.28-.15h-.44c-.17,0-.28.08-.28.2v2.92C393.49,273.85,393.37,273.93,393.2,273.93Zm.57-6.51c-.17,0-.28.08-.28.2v2.1c0,.12.11.21.28.21h.71c.53,0,1-.28,1-.8v-.91c0-.53-.43-.8-1-.8Z"></path><path class="cls-5" d="M401,273.93h-.46a.3.3,0,0,1-.29-.15L399,270.5c-.16-.41-.29-.61-.4-.61s-.15.22-.15.67v3.17c0,.12-.12.2-.28.2h-.38c-.17,0-.28-.08-.28-.2v-6.79c0-.12.11-.2.28-.2h.54c.13,0,.25.05.27.15l1.24,3.19c.17.42.3.64.4.64s.16-.23.16-.69v-3.09c0-.12.11-.2.28-.2H401c.17,0,.28.08.28.2v6.79C401.3,273.85,401.19,273.93,401,273.93Z"></path><path class="cls-5" d="M406.34,273.45v.28c0,.12-.12.2-.29.2h-3.47c-.16,0-.28-.08-.28-.2v-.28c0-.12.12-.2.28-.2h.95c.16,0,.28-.08.28-.2v-5.43c0-.12-.12-.2-.28-.2h-.95c-.16,0-.28-.08-.28-.2v-.28c0-.12.12-.2.28-.2h3.47c.17,0,.29.08.29.2v.28c0,.12-.12.2-.29.2h-1c-.17,0-.28.08-.28.2v5.43c0,.12.11.2.28.2h1C406.22,273.25,406.34,273.33,406.34,273.45Z"></path><path class="cls-5" d="M410.85,273.93h-.46a.3.3,0,0,1-.29-.15l-1.29-3.28c-.16-.41-.29-.61-.39-.61s-.16.22-.16.67v3.17c0,.12-.12.2-.28.2h-.38c-.17,0-.28-.08-.28-.2v-6.79c0-.12.11-.2.28-.2h.54a.27.27,0,0,1,.28.15l1.23,3.19c.17.42.3.64.4.64s.16-.23.16-.69v-3.09c0-.12.11-.2.28-.2h.36c.17,0,.29.08.29.2v6.79C411.14,273.85,411,273.93,410.85,273.93Z"></path><path class="cls-5" d="M415.1,271.54c0-.12-.12-.2-.29-.2h-.33c-.17,0-.29-.08-.29-.2v-.28c0-.12.12-.2.29-.2h1.29c.16,0,.28.08.28.2v1.59a2,2,0,0,1-3.82,0v-4.23a2,2,0,0,1,3.82,0v.19c0,.12-.12.2-.27.2h-.37c-.17,0-.29-.08-.29-.2v-.25c0-.53-.44-.81-1-.81s-1,.28-1,.81v4.36c0,.52.41.8.94.8s1-.28,1-.8Z"></path><path class="cls-5" d="M418,269.21h-.4c-.17,0-.28-.08-.28-.2v-.38c0-.12.11-.2.28-.2h.4c.17,0,.28.08.28.2V269C418.32,269.13,418.21,269.21,418,269.21Zm0,3.08h-.4c-.17,0-.28-.09-.28-.21v-.37c0-.12.11-.2.28-.2h.4c.17,0,.28.08.28.2v.37C418.32,272.2,418.21,272.29,418,272.29Z"></path><path class="cls-5" d="M424.5,267.91c0-.78.5-1.17,1.51-1.17h.81c1,0,1.5.39,1.5,1.17v4.85c0,.78-.49,1.17-1.5,1.17H426c-1,0-1.51-.39-1.51-1.17Zm1,4.91c0,.29.18.43.54.43h.81c.36,0,.55-.14.55-.43v-5c0-.29-.19-.43-.55-.43H426c-.36,0-.54.14-.54.43Z"></path><path class="cls-5" d="M430.1,273.93h-.4c-.17,0-.28-.08-.28-.2v-6.79c0-.12.11-.2.28-.2h1.57c1,0,1.93.52,1.93,1.54v.82c0,1-1,1.54-1.93,1.54h-.6c-.17,0-.29.08-.29.2v2.89C430.38,273.85,430.27,273.93,430.1,273.93Zm.57-6.51c-.17,0-.29.08-.29.2v2.14c0,.12.12.2.29.2h.6c.53,0,1-.27,1-.8v-.94c0-.53-.42-.8-1-.8Z"></path><path class="cls-5" d="M437.53,270.16v.28c0,.12-.12.2-.28.2h-1.67c-.16,0-.28.08-.28.2v2.21c0,.12.12.2.28.2H438c.17,0,.28.08.28.2v.28c0,.12-.11.2-.28.2h-3.36c-.17,0-.29-.08-.29-.2v-6.79c0-.12.12-.2.29-.2H438c.17,0,.28.08.28.2v.28c0,.12-.11.2-.28.2h-2.4c-.16,0-.28.08-.28.2v2.14c0,.12.12.2.28.2h1.67C437.41,270,437.53,270,437.53,270.16Z"></path><path class="cls-5" d="M439.88,273.93h-.4c-.17,0-.28-.08-.28-.2v-6.79c0-.12.11-.2.28-.2h1.68c.95,0,1.9.52,1.9,1.54v.78a1.42,1.42,0,0,1-.85,1.32.19.19,0,0,0-.13.19,1.31,1.31,0,0,0,0,.15l.88,2.69a1.65,1.65,0,0,1,.09.33c0,.12-.09.19-.29.19h-.41c-.14,0-.26-.06-.28-.16l-.93-3a.28.28,0,0,0-.29-.15h-.43c-.17,0-.29.08-.29.2v2.92C440.16,273.85,440.05,273.93,439.88,273.93Zm.57-6.51c-.17,0-.29.08-.29.2v2.1c0,.12.12.21.29.21h.71c.52,0,.95-.28.95-.8v-.91c0-.53-.43-.8-.95-.8Z"></path><path class="cls-5" d="M447.27,273.76l-.28-1.33a.28.28,0,0,0-.29-.17h-1.29a.28.28,0,0,0-.28.17l-.26,1.33a.27.27,0,0,1-.28.17h-.35c-.18,0-.28-.07-.28-.19a1.58,1.58,0,0,1,0-.21l1.41-6.62c0-.11.14-.17.29-.17h.74c.15,0,.26.06.29.17l1.4,6.62a1.58,1.58,0,0,1,0,.21c0,.12-.1.19-.28.19h-.34A.26.26,0,0,1,447.27,273.76Zm-1.21-5c-.1,0-.2.2-.29.6l-.36,1.78a1.66,1.66,0,0,0,0,.24c0,.11.1.18.27.18h.82c.17,0,.28-.06.28-.18a1.66,1.66,0,0,0,0-.24l-.38-1.78C446.25,269,446.16,268.78,446.06,268.78Z"></path><path class="cls-5" d="M452.56,266.94v.28c0,.12-.12.2-.28.2h-1c-.16,0-.28.08-.28.2v6.11c0,.12-.12.2-.29.2h-.39c-.17,0-.29-.08-.29-.2v-6.11c0-.12-.11-.2-.28-.2h-.94c-.17,0-.29-.08-.29-.2v-.28c0-.12.12-.2.29-.2h3.47C452.44,266.74,452.56,266.82,452.56,266.94Z"></path><path class="cls-5" d="M457.47,273.45v.28c0,.12-.11.2-.28.2h-3.47c-.17,0-.28-.08-.28-.2v-.28c0-.12.11-.2.28-.2h.94c.17,0,.29-.08.29-.2v-5.43c0-.12-.12-.2-.29-.2h-.94c-.17,0-.28-.08-.28-.2v-.28c0-.12.11-.2.28-.2h3.47c.17,0,.28.08.28.2v.28c0,.12-.11.2-.28.2h-1c-.17,0-.29.08-.29.2v5.43c0,.12.12.2.29.2h1C457.36,273.25,457.47,273.33,457.47,273.45Z"></path><path class="cls-5" d="M458.35,267.91c0-.78.51-1.17,1.51-1.17h.81c1,0,1.5.39,1.5,1.17v4.85c0,.78-.49,1.17-1.5,1.17h-.81c-1,0-1.51-.39-1.51-1.17Zm1,4.91c0,.29.18.43.54.43h.81c.37,0,.55-.14.55-.43v-5c0-.29-.18-.43-.55-.43h-.81c-.36,0-.54.14-.54.43Z"></path><path class="cls-5" d="M466.8,273.93h-.46a.3.3,0,0,1-.29-.15l-1.29-3.28c-.16-.41-.29-.61-.39-.61s-.16.22-.16.67v3.17c0,.12-.12.2-.28.2h-.38c-.17,0-.28-.08-.28-.2v-6.79c0-.12.11-.2.28-.2h.54a.27.27,0,0,1,.28.15l1.23,3.19c.17.42.3.64.4.64s.16-.23.16-.69v-3.09c0-.12.11-.2.28-.2h.36c.17,0,.29.08.29.2v6.79C467.09,273.85,467,273.93,466.8,273.93Z"></path><path class="cls-5" d="M470.57,266.74h.36c.17,0,.27.07.29.19l.31,3.68c0,.35.1.53.18.53s.19-.17.3-.5l.34-1a.22.22,0,0,1,.21-.11.21.21,0,0,1,.19.11l.33,1c.11.33.21.5.29.5s.15-.18.18-.53l.32-3.68c0-.12.1-.19.29-.19h.37c.18,0,.28.08.28.21l-.55,6.79c0,.12-.12.19-.29.19h-.45a.27.27,0,0,1-.28-.16l-.41-1.45c-.09-.28-.2-.43-.29-.43s-.19.15-.27.43l-.41,1.45a.27.27,0,0,1-.28.16h-.47c-.17,0-.27-.07-.28-.19l-.54-6.79C470.29,266.82,470.39,266.74,470.57,266.74Z"></path><path class="cls-5" d="M479.48,273.45v.28c0,.12-.11.2-.28.2h-3.47c-.17,0-.28-.08-.28-.2v-.28c0-.12.11-.2.28-.2h.94c.17,0,.29-.08.29-.2v-5.43c0-.12-.12-.2-.29-.2h-.94c-.17,0-.28-.08-.28-.2v-.28c0-.12.11-.2.28-.2h3.47c.17,0,.28.08.28.2v.28c0,.12-.11.2-.28.2h-1c-.17,0-.29.08-.29.2v5.43c0,.12.12.2.29.2h1C479.37,273.25,479.48,273.33,479.48,273.45Z"></path><path class="cls-5" d="M484.4,266.94v.28c0,.12-.12.2-.29.2h-1c-.17,0-.28.08-.28.2v6.11c0,.12-.12.2-.29.2h-.4c-.16,0-.28-.08-.28-.2v-6.11c0-.12-.12-.2-.28-.2h-.94c-.17,0-.29-.08-.29-.2v-.28c0-.12.12-.2.29-.2h3.46C484.28,266.74,484.4,266.82,484.4,266.94Z"></path><path class="cls-5" d="M486.35,266.94v2.82c0,.12.11.2.28.2H488c.17,0,.28-.08.28-.2v-2.82c0-.12.12-.2.29-.2h.38c.17,0,.29.08.29.2v6.79c0,.12-.12.2-.29.2h-.38c-.17,0-.29-.08-.29-.2v-2.89c0-.12-.11-.2-.28-.2h-1.33c-.17,0-.28.08-.28.2v2.89c0,.12-.12.2-.29.2h-.4c-.16,0-.28-.08-.28-.2v-6.79c0-.12.12-.2.28-.2h.4C486.23,266.74,486.35,266.82,486.35,266.94Z"></path><path class="cls-5" d="M490.3,267.91q0-1.17,1.5-1.17h.82c1,0,1.49.39,1.49,1.17v4.85c0,.78-.49,1.17-1.49,1.17h-.82q-1.5,0-1.5-1.17Zm1,4.91c0,.29.18.43.54.43h.82c.36,0,.54-.14.54-.43v-5c0-.29-.18-.43-.54-.43h-.82c-.36,0-.54.14-.54.43Z"></path><path class="cls-5" d="M495.21,266.94c0-.12.12-.2.29-.2h.39c.17,0,.29.08.29.2v5.58c0,.52.41.8.94.8s.95-.28.95-.8v-5.58c0-.12.12-.2.29-.2h.38c.17,0,.29.08.29.2v5.51a2,2,0,0,1-3.82,0Z"></path><path class="cls-5" d="M504.06,266.94v.28c0,.12-.12.2-.28.2h-1c-.16,0-.28.08-.28.2v6.11c0,.12-.12.2-.29.2h-.39c-.17,0-.29-.08-.29-.2v-6.11c0-.12-.11-.2-.28-.2h-.94c-.17,0-.29-.08-.29-.2v-.28c0-.12.12-.2.29-.2h3.47C503.94,266.74,504.06,266.82,504.06,266.94Z"></path><path class="cls-5" d="M510.6,273.76l-.28-1.33a.28.28,0,0,0-.29-.17h-1.29a.28.28,0,0,0-.28.17l-.26,1.33a.27.27,0,0,1-.28.17h-.35c-.18,0-.28-.07-.28-.19a1.58,1.58,0,0,1,0-.21l1.41-6.62c0-.11.14-.17.29-.17h.74c.15,0,.26.06.29.17l1.4,6.62a1.58,1.58,0,0,1,0,.21c0,.12-.1.19-.28.19h-.34A.26.26,0,0,1,510.6,273.76Zm-1.21-5c-.1,0-.2.2-.29.6l-.36,1.78a1.66,1.66,0,0,0,0,.24c0,.11.1.18.27.18h.82c.17,0,.28-.06.28-.18a1.66,1.66,0,0,0,0-.24l-.38-1.78C509.58,269,509.49,268.78,509.39,268.78Z"></path><path class="cls-5" d="M515.94,273.93h-.46a.3.3,0,0,1-.29-.15l-1.29-3.28c-.16-.41-.29-.61-.4-.61s-.15.22-.15.67v3.17c0,.12-.12.2-.28.2h-.38c-.17,0-.28-.08-.28-.2v-6.79c0-.12.11-.2.28-.2h.54c.13,0,.25.05.27.15l1.24,3.19c.17.42.3.64.4.64s.16-.23.16-.69v-3.09c0-.12.11-.2.28-.2h.36c.17,0,.28.08.28.2v6.79C516.22,273.85,516.11,273.93,515.94,273.93Z"></path><path class="cls-5" d="M522.88,273.76l-.28-1.33c0-.11-.14-.17-.29-.17H521a.28.28,0,0,0-.28.17l-.26,1.33a.27.27,0,0,1-.28.17h-.35c-.18,0-.28-.07-.28-.19a1.58,1.58,0,0,1,0-.21l1.41-6.62a.28.28,0,0,1,.29-.17h.75a.26.26,0,0,1,.28.17l1.41,6.62a2.07,2.07,0,0,1,0,.21c0,.12-.1.19-.28.19h-.33C523,273.93,522.91,273.87,522.88,273.76Zm-1.21-5c-.1,0-.19.2-.28.6l-.37,1.78a1.66,1.66,0,0,0,0,.24c0,.11.1.18.27.18h.82c.17,0,.29-.06.29-.18a2.28,2.28,0,0,0,0-.24l-.38-1.78C521.86,269,521.77,268.78,521.67,268.78Z"></path><path class="cls-5" d="M528.22,273.93h-.46a.3.3,0,0,1-.29-.15l-1.29-3.28c-.16-.41-.29-.61-.39-.61s-.16.22-.16.67v3.17c0,.12-.12.2-.28.2H525c-.17,0-.28-.08-.28-.2v-6.79c0-.12.11-.2.28-.2h.54a.27.27,0,0,1,.28.15l1.23,3.19c.17.42.3.64.4.64s.16-.23.16-.69v-3.09c0-.12.11-.2.28-.2h.36c.17,0,.29.08.29.2v6.79C528.51,273.85,528.39,273.93,528.22,273.93Z"></path><path class="cls-5" d="M533.54,266.94v.28c0,.12-.12.2-.29.2h-1c-.17,0-.28.08-.28.2v6.11c0,.12-.12.2-.29.2h-.4c-.16,0-.28-.08-.28-.2v-6.11c0-.12-.12-.2-.28-.2h-1c-.16,0-.28-.08-.28-.2v-.28c0-.12.12-.2.28-.2h3.47C533.42,266.74,533.54,266.82,533.54,266.94Z"></path><path class="cls-5" d="M537.72,270.16v.28c0,.12-.12.2-.29.2h-1.66c-.17,0-.28.08-.28.2v2.21c0,.12.11.2.28.2h2.4c.17,0,.28.08.28.2v.28c0,.12-.11.2-.28.2H534.8c-.17,0-.28-.08-.28-.2v-6.79c0-.12.11-.2.28-.2h3.37c.17,0,.28.08.28.2v.28c0,.12-.11.2-.28.2h-2.4c-.17,0-.28.08-.28.2v2.14c0,.12.11.2.28.2h1.66C537.6,270,537.72,270,537.72,270.16Z"></path><path class="cls-5" d="M543,273.93h-.47a.29.29,0,0,1-.28-.15l-1.29-3.28c-.17-.41-.3-.61-.4-.61s-.15.22-.15.67v3.17c0,.12-.12.2-.29.2h-.37c-.17,0-.28-.08-.28-.2v-6.79c0-.12.11-.2.28-.2h.54a.26.26,0,0,1,.27.15l1.24,3.19c.17.42.3.64.4.64s.15-.23.15-.69v-3.09c0-.12.12-.2.29-.2H543c.17,0,.28.08.28.2v6.79C543.25,273.85,543.14,273.93,543,273.93Z"></path><path class="cls-5" d="M547.88,273.93h-.46a.3.3,0,0,1-.29-.15l-1.28-3.28c-.17-.41-.3-.61-.4-.61s-.16.22-.16.67v3.17c0,.12-.11.2-.28.2h-.38c-.16,0-.28-.08-.28-.2v-6.79c0-.12.12-.2.28-.2h.55a.27.27,0,0,1,.27.15l1.23,3.19c.17.42.3.64.4.64s.16-.23.16-.69v-3.09c0-.12.11-.2.28-.2h.36c.17,0,.29.08.29.2v6.79C548.17,273.85,548.05,273.93,547.88,273.93Z"></path><path class="cls-5" d="M552.37,273.76l-.28-1.33a.26.26,0,0,0-.28-.17h-1.29a.28.28,0,0,0-.29.17l-.26,1.33a.27.27,0,0,1-.28.17h-.35c-.18,0-.28-.07-.28-.19a1.58,1.58,0,0,1,0-.21l1.42-6.62c0-.11.14-.17.28-.17h.75c.14,0,.26.06.28.17l1.41,6.62a1.58,1.58,0,0,1,0,.21c0,.12-.11.19-.29.19h-.33C552.51,273.93,552.4,273.87,552.37,273.76Zm-1.21-5c-.1,0-.19.2-.28.6l-.36,1.78a1,1,0,0,0,0,.24c0,.11.1.18.27.18h.82c.17,0,.29-.06.29-.18a2.28,2.28,0,0,0,0-.24l-.38-1.78C551.35,269,551.26,268.78,551.16,268.78Z"></path><path class="cls-5" d="M395.77,285h-.36c-.17,0-.28-.08-.28-.2v-3.55c0-.36-.06-.54-.13-.54s-.17.16-.3.5l-.37,1a.25.25,0,0,1-.25.13.26.26,0,0,1-.26-.13l-.37-1c-.13-.34-.23-.5-.31-.5s-.12.18-.12.54v3.55c0,.12-.11.2-.28.2h-.36c-.17,0-.28-.08-.28-.2V278c0-.12.11-.2.28-.2h.49a.27.27,0,0,1,.27.15l.66,1.8c.08.23.18.34.27.34s.18-.11.27-.34l.67-1.81a.28.28,0,0,1,.27-.14h.49c.17,0,.28.08.28.2v6.79C396.05,284.88,395.94,285,395.77,285Z"></path><path class="cls-5" d="M400.18,284.78l-.28-1.32a.26.26,0,0,0-.28-.17h-1.29a.28.28,0,0,0-.29.17l-.26,1.32a.26.26,0,0,1-.28.18h-.35c-.18,0-.28-.07-.28-.19a1.79,1.79,0,0,1,0-.22l1.42-6.61c0-.11.14-.17.28-.17h.75c.14,0,.26.06.28.17l1.41,6.61c0,.2,0,.21,0,.22s-.1.19-.28.19h-.33A.28.28,0,0,1,400.18,284.78Zm-1.21-5c-.1,0-.19.2-.28.6l-.36,1.78a1,1,0,0,0,0,.24c0,.11.1.18.27.18h.82c.17,0,.29-.06.29-.18a1.93,1.93,0,0,0,0-.24l-.38-1.78C399.16,280,399.07,279.81,399,279.81Z"></path><path class="cls-5" d="M402.69,281.21l-1.33-3.07a.6.6,0,0,1-.08-.22c0-.11.1-.15.3-.15h.4c.14,0,.23,0,.27.14l.72,1.74c.08.2.17.29.27.29s.18-.09.27-.29l.75-1.74c0-.1.13-.14.27-.14h.39c.19,0,.29.05.29.15a.7.7,0,0,1-.07.22l-1.33,3.07a1,1,0,0,0-.08.39v3.16c0,.13-.09.2-.28.2h-.4c-.2,0-.29-.07-.29-.2V281.6A1,1,0,0,0,402.69,281.21Z"></path><path class="cls-5" d="M409.39,285H409c-.17,0-.29-.08-.29-.2V278c0-.12.12-.2.29-.2h1.57a1.72,1.72,0,0,1,1.92,1.54v.82a1.72,1.72,0,0,1-1.92,1.54H410c-.17,0-.28.08-.28.2v2.89C409.68,284.88,409.56,285,409.39,285Zm.57-6.51c-.17,0-.28.08-.28.2v2.14c0,.12.11.2.28.2h.61c.53,0,.94-.27.94-.8v-.94c0-.53-.41-.8-.94-.8Z"></path><path class="cls-5" d="M416.82,281.19v.28c0,.12-.11.2-.28.2h-1.66c-.17,0-.29.08-.29.2v2.21c0,.12.12.2.29.2h2.4c.16,0,.28.08.28.2v.28c0,.12-.12.2-.28.2h-3.37c-.17,0-.28-.08-.28-.2V278c0-.12.11-.2.28-.2h3.37c.16,0,.28.08.28.2v.27c0,.12-.12.21-.28.21h-2.4c-.17,0-.29.08-.29.2v2.14c0,.12.12.2.29.2h1.66C416.71,281,416.82,281.07,416.82,281.19Z"></path><path class="cls-5" d="M419.17,285h-.4c-.16,0-.28-.08-.28-.2V278c0-.12.12-.2.28-.2h1.68c.95,0,1.91.52,1.91,1.54v.78a1.41,1.41,0,0,1-.85,1.31.19.19,0,0,0-.13.2,1,1,0,0,0,0,.15l.88,2.69a1.65,1.65,0,0,1,.09.33c0,.12-.09.19-.28.19h-.42a.28.28,0,0,1-.28-.16l-.93-3a.27.27,0,0,0-.28-.16h-.44c-.17,0-.28.09-.28.21v2.92C419.46,284.88,419.34,285,419.17,285Zm.57-6.51c-.17,0-.28.08-.28.2v2.1c0,.12.11.2.28.2h.71c.53,0,.95-.27.95-.8v-.9c0-.53-.42-.8-.95-.8Z"></path><path class="cls-5" d="M427.07,285h-.36c-.17,0-.29-.08-.29-.2v-3.55c0-.36-.05-.54-.13-.54s-.16.16-.29.5l-.38,1c0,.08-.13.13-.24.13a.26.26,0,0,1-.26-.13l-.37-1c-.13-.34-.24-.5-.31-.5s-.12.18-.12.54v3.55c0,.12-.12.2-.28.2h-.36c-.17,0-.29-.08-.29-.2V278c0-.12.12-.2.29-.2h.49a.28.28,0,0,1,.27.15l.65,1.8c.08.23.18.34.28.34s.17-.11.27-.34l.67-1.81c0-.08.14-.14.27-.14h.49c.16,0,.28.08.28.2v6.79C427.35,284.88,427.23,285,427.07,285Z"></path><path class="cls-5" d="M431.48,284.78l-.28-1.32a.28.28,0,0,0-.29-.17h-1.29a.28.28,0,0,0-.28.17l-.26,1.32a.26.26,0,0,1-.28.18h-.35c-.18,0-.28-.07-.28-.19a1.79,1.79,0,0,1,0-.22l1.41-6.61c0-.11.14-.17.29-.17h.74c.15,0,.26.06.29.17l1.4,6.61a1.79,1.79,0,0,1,0,.22c0,.12-.1.19-.28.19h-.34A.27.27,0,0,1,431.48,284.78Zm-1.21-5c-.1,0-.2.2-.29.6l-.36,1.78a1.93,1.93,0,0,0,0,.24c0,.11.11.18.28.18h.82c.17,0,.28-.06.28-.18a1.52,1.52,0,0,0,0-.24l-.38-1.78C430.46,280,430.37,279.81,430.27,279.81Z"></path><path class="cls-5" d="M436.82,285h-.46a.31.31,0,0,1-.29-.15l-1.29-3.28c-.16-.41-.29-.61-.4-.61s-.15.22-.15.67v3.17c0,.12-.12.2-.28.2h-.38c-.17,0-.28-.08-.28-.2V278c0-.12.11-.2.28-.2h.54c.13,0,.25.05.27.14l1.24,3.2c.17.42.3.63.4.63s.16-.23.16-.68V278c0-.12.11-.2.28-.2h.36c.17,0,.28.08.28.2v6.79C437.1,284.88,437,285,436.82,285Z"></path><path class="cls-5" d="M441.4,281.19v.28c0,.12-.12.2-.28.2h-1.67c-.16,0-.28.08-.28.2v2.21c0,.12.12.2.28.2h2.4c.17,0,.28.08.28.2v.28c0,.12-.11.2-.28.2h-3.36c-.17,0-.29-.08-.29-.2V278c0-.12.12-.2.29-.2h3.36c.17,0,.28.08.28.2v.27c0,.12-.11.21-.28.21h-2.4c-.16,0-.28.08-.28.2v2.14c0,.12.12.2.28.2h1.67C441.28,281,441.4,281.07,441.4,281.19Z"></path><path class="cls-5" d="M446.65,285h-.46a.31.31,0,0,1-.29-.15l-1.29-3.28c-.16-.41-.29-.61-.4-.61s-.15.22-.15.67v3.17c0,.12-.12.2-.28.2h-.38c-.17,0-.28-.08-.28-.2V278c0-.12.11-.2.28-.2h.54c.13,0,.25.05.27.14l1.24,3.2c.17.42.3.63.4.63s.16-.23.16-.68V278c0-.12.11-.2.28-.2h.36c.17,0,.28.08.28.2v6.79C446.93,284.88,446.82,285,446.65,285Z"></path><path class="cls-5" d="M452,278v.27c0,.12-.11.21-.28.21h-1c-.17,0-.28.08-.28.2v6.11c0,.12-.12.2-.29.2h-.4c-.17,0-.28-.08-.28-.2v-6.11c0-.12-.12-.2-.29-.2h-.94c-.16,0-.28-.09-.28-.21V278c0-.12.12-.2.28-.2h3.47C451.85,277.77,452,277.85,452,278Z"></path><path class="cls-5" d="M456.88,284.48v.28c0,.12-.12.2-.28.2h-3.37c-.17,0-.28-.08-.28-.2V278c0-.12.11-.2.28-.2h.4c.17,0,.29.08.29.2v6.11c0,.12.11.2.28.2h2.4C456.76,284.28,456.88,284.36,456.88,284.48Z"></path><path class="cls-5" d="M458.3,281.21,457,278.14a.7.7,0,0,1-.07-.22c0-.11.1-.15.29-.15h.4c.14,0,.23,0,.27.14l.72,1.74c.08.2.17.29.28.29s.18-.09.27-.29l.74-1.74c0-.1.13-.14.28-.14h.38q.3,0,.3.15a.6.6,0,0,1-.08.22l-1.33,3.07a1,1,0,0,0-.07.39v3.16c0,.13-.09.2-.29.2h-.4c-.19,0-.28-.07-.28-.2V281.6A1,1,0,0,0,458.3,281.21Z"></path><path class="cls-5" d="M464.42,285c-.17,0-.29-.08-.29-.2v-.32c0-.24.47-.08.47-.33v-5.5c0-.25-.47-.08-.47-.33V278c0-.12.12-.2.29-.2h2a1.7,1.7,0,0,1,1.9,1.54v4.11a1.7,1.7,0,0,1-1.9,1.54Zm1.41-6.51c-.16,0-.28.08-.28.2v5.43c0,.12.12.2.28.2h.59c.52,0,.94-.28.94-.8v-4.23c0-.53-.42-.8-.94-.8Z"></path><path class="cls-5" d="M472.09,284.78l-.28-1.32c0-.11-.14-.17-.29-.17h-1.29a.28.28,0,0,0-.28.17l-.26,1.32a.26.26,0,0,1-.28.18h-.35c-.18,0-.28-.07-.28-.19a1.79,1.79,0,0,1,0-.22l1.41-6.61a.28.28,0,0,1,.29-.17h.75a.26.26,0,0,1,.28.17l1.41,6.61c0,.2,0,.21,0,.22s-.1.19-.28.19h-.33A.28.28,0,0,1,472.09,284.78Zm-1.21-5c-.1,0-.19.2-.28.6l-.37,1.78a1.52,1.52,0,0,0,0,.24c0,.11.1.18.27.18h.82c.17,0,.29-.06.29-.18a1.93,1.93,0,0,0,0-.24l-.38-1.78C471.07,280,471,279.81,470.88,279.81Z"></path><path class="cls-5" d="M477.51,285h-.36c-.17,0-.29-.08-.29-.2v-3.55c0-.36-.05-.54-.12-.54s-.17.16-.3.5l-.37,1a.25.25,0,0,1-.25.13.26.26,0,0,1-.26-.13l-.37-1c-.13-.34-.23-.5-.31-.5s-.12.18-.12.54v3.55c0,.12-.11.2-.28.2h-.36c-.17,0-.29-.08-.29-.2V278c0-.12.12-.2.29-.2h.49a.27.27,0,0,1,.27.15l.66,1.8c.07.23.18.34.27.34s.18-.11.27-.34l.67-1.81c0-.08.14-.14.27-.14h.49c.17,0,.28.08.28.2v6.79C477.79,284.88,477.68,285,477.51,285Z"></path><path class="cls-5" d="M481.92,284.78l-.28-1.32c0-.11-.14-.17-.29-.17h-1.29a.28.28,0,0,0-.28.17l-.26,1.32a.26.26,0,0,1-.28.18h-.35c-.18,0-.28-.07-.28-.19a1.79,1.79,0,0,1,0-.22l1.41-6.61a.28.28,0,0,1,.29-.17h.75a.26.26,0,0,1,.28.17l1.41,6.61c0,.2,0,.21,0,.22s-.1.19-.28.19h-.33A.28.28,0,0,1,481.92,284.78Zm-1.21-5c-.1,0-.19.2-.28.6l-.37,1.78a1.52,1.52,0,0,0,0,.24c0,.11.1.18.27.18h.82c.17,0,.29-.06.29-.18a1.93,1.93,0,0,0,0-.24l-.38-1.78C480.9,280,480.81,279.81,480.71,279.81Z"></path><path class="cls-5" d="M486.33,282.57c0-.12-.11-.2-.28-.2h-.34c-.16,0-.28-.08-.28-.2v-.28c0-.12.12-.2.28-.2H487c.17,0,.29.08.29.2v1.59c0,1-1,1.54-1.91,1.54a1.71,1.71,0,0,1-1.91-1.54v-4.23a2,2,0,0,1,3.82,0v.19c0,.12-.12.2-.27.2h-.38c-.16,0-.28-.08-.28-.2v-.25c0-.53-.44-.81-1-.81s-.95.28-.95.81v4.35c0,.53.41.8.94.8s.95-.27.95-.8Z"></path><path class="cls-5" d="M491.58,281.19v.28c0,.12-.11.2-.28.2h-1.66c-.17,0-.29.08-.29.2v2.21c0,.12.12.2.29.2H492c.16,0,.28.08.28.2v.28c0,.12-.12.2-.28.2h-3.37c-.17,0-.28-.08-.28-.2V278c0-.12.11-.2.28-.2H492c.16,0,.28.08.28.2v.27c0,.12-.12.21-.28.21h-2.4c-.17,0-.29.08-.29.2v2.14c0,.12.12.2.29.2h1.66C491.47,281,491.58,281.07,491.58,281.19Z"></path><path class="cls-5" d="M499.68,278v.27c0,.12-.11.21-.28.21h-1c-.17,0-.28.08-.28.2v6.11c0,.12-.12.2-.29.2h-.4c-.17,0-.28-.08-.28-.2v-6.11c0-.12-.12-.2-.29-.2h-.94c-.16,0-.28-.09-.28-.21V278c0-.12.12-.2.28-.2h3.47C499.57,277.77,499.68,277.85,499.68,278Z"></path><path class="cls-5" d="M501.64,278v2.82c0,.12.11.2.28.2h1.33c.17,0,.28-.08.28-.2V278c0-.12.12-.2.28-.2h.39c.17,0,.29.08.29.2v6.79c0,.12-.12.2-.29.2h-.39c-.16,0-.28-.08-.28-.2v-2.89c0-.12-.11-.2-.28-.2h-1.33c-.17,0-.28.08-.28.2v2.89c0,.12-.12.2-.29.2H501c-.17,0-.28-.08-.28-.2V278c0-.12.11-.2.28-.2h.4C501.52,277.77,501.64,277.85,501.64,278Z"></path><path class="cls-5" d="M508.78,281.19v.28c0,.12-.11.2-.28.2h-1.67c-.16,0-.28.08-.28.2v2.21c0,.12.12.2.28.2h2.4c.17,0,.29.08.29.2v.28c0,.12-.12.2-.29.2h-3.36c-.17,0-.29-.08-.29-.2V278c0-.12.12-.2.29-.2h3.36c.17,0,.29.08.29.2v.27c0,.12-.12.21-.29.21h-2.4c-.16,0-.28.08-.28.2v2.14c0,.12.12.2.28.2h1.67C508.67,281,508.78,281.07,508.78,281.19Z"></path><path class="cls-5" d="M513,285c-.17,0-.28-.08-.28-.2v-.32c0-.24.46-.08.46-.33v-5.5c0-.25-.46-.08-.46-.33V278c0-.12.11-.2.28-.2h2a1.71,1.71,0,0,1,1.91,1.54v4.11A1.71,1.71,0,0,1,515,285Zm1.42-6.51c-.17,0-.29.08-.29.2v5.43c0,.12.12.2.29.2H515c.53,0,.94-.28.94-.8v-4.23c0-.53-.41-.8-.94-.8Z"></path><path class="cls-5" d="M521.06,281.19v.28c0,.12-.11.2-.28.2h-1.66c-.17,0-.29.08-.29.2v2.21c0,.12.12.2.29.2h2.39c.17,0,.29.08.29.2v.28c0,.12-.12.2-.29.2h-3.36c-.17,0-.28-.08-.28-.2V278c0-.12.11-.2.28-.2h3.36c.17,0,.29.08.29.2v.27c0,.12-.12.21-.29.21h-2.39c-.17,0-.29.08-.29.2v2.14c0,.12.12.2.29.2h1.66C521,281,521.06,281.07,521.06,281.19Z"></path><path class="cls-5" d="M523.51,277.94l.89,4.33c.08.4.17.6.29.6s.19-.2.28-.6l.89-4.33c0-.12.12-.17.29-.17h.36c.19,0,.28.06.28.19a.75.75,0,0,1,0,.17l-1.41,6.65c0,.12-.12.18-.29.18h-.75c-.16,0-.25-.06-.28-.18l-1.43-6.65a1.55,1.55,0,0,1,0-.17c0-.13.09-.19.29-.19h.37C523.4,277.77,523.49,277.82,523.51,277.94Z"></path><path class="cls-5" d="M531.63,284.48v.28c0,.12-.12.2-.29.2h-3.46c-.17,0-.29-.08-.29-.2v-.28c0-.12.12-.2.29-.2h.94c.16,0,.28-.08.28-.2v-5.43c0-.12-.12-.2-.28-.2h-.94c-.17,0-.29-.09-.29-.21V278c0-.12.12-.2.29-.2h3.46c.17,0,.29.08.29.2v.27c0,.12-.12.21-.29.21h-1c-.17,0-.28.08-.28.2v5.43c0,.12.11.2.28.2h1C531.51,284.28,531.63,284.36,531.63,284.48Z"></path><path class="cls-5" d="M532.48,279.25a2,2,0,0,1,3.82,0v.19c0,.12-.12.2-.27.2h-.38c-.16,0-.28-.08-.28-.2v-.25a.84.84,0,0,0-1-.81c-.55,0-1,.28-1,.81v4.35c0,.53.42.8,1,.8s1-.27,1-.8v-.35c0-.12.12-.21.28-.21H536c.17,0,.29.09.29.21v.29c0,1-1,1.54-1.91,1.54a1.71,1.71,0,0,1-1.91-1.54Z"></path><path class="cls-5" d="M540.59,281.19v.28c0,.12-.11.2-.28.2h-1.66c-.17,0-.29.08-.29.2v2.21c0,.12.12.2.29.2h2.4c.16,0,.28.08.28.2v.28c0,.12-.12.2-.28.2h-3.37c-.17,0-.28-.08-.28-.2V278c0-.12.11-.2.28-.2h3.37c.16,0,.28.08.28.2v.27c0,.12-.12.21-.28.21h-2.4c-.17,0-.29.08-.29.2v2.14c0,.12.12.2.29.2h1.66C540.48,281,540.59,281.07,540.59,281.19Z"></path><path class="cls-5" d="M543.2,285h-.4c-.17,0-.28-.08-.28-.2v-.38c0-.12.11-.2.28-.2h.4c.17,0,.29.08.29.2v.38C543.49,284.88,543.37,285,543.2,285Z"></path></g></svg>
\ No newline at end of file
diff --git a/core/resources/src/commonMain/composeResources/files/t-deck.svg b/core/resources/src/commonMain/composeResources/files/t-deck.svg
new file mode 100644
index 0000000000..cdc53c5d30
--- /dev/null
+++ b/core/resources/src/commonMain/composeResources/files/t-deck.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="696.3 500.37 622.29 968.69"><defs><style>.cls-1{fill:#2d2d2d;}.cls-2{fill:#383838;}.cls-3{fill:#474649;}.cls-4{fill:#939696;}.cls-5,.cls-7{fill:#e6e8e8;}.cls-11,.cls-12,.cls-13,.cls-14,.cls-15,.cls-16,.cls-17,.cls-18,.cls-6{fill:none;}.cls-16,.cls-6{stroke:#939696;stroke-width:2px;}.cls-18,.cls-6{stroke-linecap:round;stroke-linejoin:round;}.cls-7{font-size:22.85px;font-family:ArialMT, Arial;}.cls-8{fill:#515153;}.cls-9{fill:#e2d299;}.cls-10{fill:#fff;}.cls-11,.cls-13,.cls-14,.cls-15{stroke:#050606;}.cls-11,.cls-12,.cls-13,.cls-14,.cls-15,.cls-16,.cls-17{stroke-miterlimit:10;}.cls-11{stroke-width:1.35px;}.cls-12,.cls-17,.cls-18{stroke:#fff;}.cls-12,.cls-15{stroke-width:1.79px;}.cls-13{stroke-width:1.8px;}.cls-14{stroke-width:4.05px;}.cls-17{stroke-width:1.37px;}.cls-18{stroke-width:1.37px;}</style></defs><g id="Layer_3" data-name="Layer 3"><path class="cls-1" d="M1292.56,1030.81v287.34c0,51.3-17,98.13-78.62,120.23-33.78,12.13-72.45,17.21-107.88,19.81-23.07,1.7-66.69,2.55-98.62,2.85-31.93-.3-75.55-1.15-98.62-2.85-35.43-2.6-74.1-7.68-107.88-19.81-61.6-22.1-78.62-68.93-78.62-120.23V1030.81Z"/><path class="cls-2" d="M1306.83,1210.35c-3,2.5-2.35,7.42-6.33,11.56-2,2.07-5.21,2.65-7.94,2.72v93.52c0,51.3-17,98.13-78.62,120.23-33.78,12.13-72.45,17.21-107.88,19.81-23.07,1.7-66.69,2.55-98.62,2.85-31.93-.3-75.55-1.15-98.62-2.85-35.43-2.6-74.1-7.68-107.88-19.81-61.6-22.1-78.62-68.93-78.62-120.23v-94.29a17.44,17.44,0,0,1-7.13-1.4c-5.08-2.35-3.9-7.73-7.43-11.92a8.73,8.73,0,0,0-3.92-2.65v110.83c0,52.75,17,100.9,78.62,123.63,33.79,12.47,72.21,18,107.6,21.08,21,1.85,69.3,3.79,117.26,3.59h.24c48,.2,96.28-1.74,117.26-3.59,35.39-3.12,73.81-8.61,107.6-21.08,61.59-22.73,78.62-70.88,78.62-123.63V1208.18A13.09,13.09,0,0,0,1306.83,1210.35Z"/><path class="cls-3" d="M722.79,1332.36h0a25.91,25.91,0,0,0,25.92-25.92V1137.88h530.2v186.39a12.8,12.8,0,0,0,12.81,12.8h0v-29l.84-277.22H722.32Z"/><path class="cls-1" d="M1292.56,590.3v440.51H722.32V590.3a74.74,74.74,0,0,1,74.75-74.75h420.74A74.74,74.74,0,0,1,1292.56,590.3Z"/><rect class="cls-4" x="942.13" y="547.62" width="132.22" height="13.89" rx="6.95"/><rect class="cls-5" x="743.88" y="1199.81" width="540.06" height="13.65" rx="6.82"/><rect class="cls-5" x="743.88" y="1133.54" width="540.06" height="13.65" rx="6.82"/><rect class="cls-5" x="743.88" y="1266.09" width="540.06" height="13.65" rx="6.82"/><rect class="cls-5" x="743.88" y="1332.36" width="540.06" height="13.65" rx="6.82"/><path class="cls-6" d="M1021.42,1034.73v9.87a34.52,34.52,0,0,1,27,27.08h9.86"/><path class="cls-6" d="M1007.54,1034.76v9.88a34.5,34.5,0,0,0-26.79,27h-9.86"/><path class="cls-6" d="M971,1085.57h9.89a34.53,34.53,0,0,0,26.69,26.57V1122"/><path class="cls-6" d="M1021.42,1122.05v-9.87a34.53,34.53,0,0,0,26.86-26.61h9.89"/><circle class="cls-5" cx="1014.57" cy="1078.39" r="26.4"/><rect class="cls-2" x="755.65" y="633.64" width="500.52" height="377.46"/><text class="cls-7" transform="translate(762.22 1184.58)">Q</text><text class="cls-7" transform="translate(813.86 1184.58)">W</text><text class="cls-7" transform="translate(867.23 1184.58)">E</text><text class="cls-7" transform="translate(920.6 1184.58)">R</text><text class="cls-7" transform="translate(973.98 1184.58)">T</text><text class="cls-7" transform="translate(1034.95 1184.58)">Y</text><text class="cls-7" transform="translate(1142 1184.58)">I</text><text class="cls-7" transform="translate(1088.49 1184.58)">U</text><text class="cls-7" transform="translate(1246.93 1184.58)">P</text><text class="cls-7" transform="translate(1194.11 1184.58)">O</text><text class="cls-7" transform="translate(762.22 1249.77)">A</text><text class="cls-7" transform="translate(813.86 1249.77)">S</text><text class="cls-7" transform="translate(867.23 1249.77)">D</text><text class="cls-7" transform="translate(920.6 1249.77)">F</text><text class="cls-7" transform="translate(973.98 1249.77)">G</text><text class="cls-7" transform="translate(1034.95 1249.77)">H</text><text class="cls-7" transform="translate(1142 1249.77)">K</text><text class="cls-7" transform="translate(1088.49 1249.77)">J</text><text class="cls-7" transform="translate(1194.11 1249.77)">L</text><text class="cls-7" transform="translate(758.45 1316)">alt</text><text class="cls-7" transform="translate(813.86 1316)">Z</text><text class="cls-7" transform="translate(867.23 1316)">X</text><text class="cls-7" transform="translate(920.6 1316)">C</text><text class="cls-7" transform="translate(973.98 1316)">V</text><text class="cls-7" transform="translate(1034.95 1316)">B</text><text class="cls-7" transform="translate(1142 1316)">M</text><text class="cls-7" transform="translate(1088.49 1316)">N</text><path class="cls-8" d="M1316.56,617.77v408.74a6.22,6.22,0,0,1-1.81,4.39l-3.71,3.71v173.57a13.09,13.09,0,0,0-4.21,2.17c-3,2.5-2.35,7.42-6.33,11.56-2,2.07-5.21,2.65-7.94,2.72V590.3a74.74,74.74,0,0,0-74.75-74.75H797.07a74.74,74.74,0,0,0-74.75,74.75v633.56a17.44,17.44,0,0,1-7.13-1.4c-5.08-2.35-3.9-7.73-7.43-11.92a8.73,8.73,0,0,0-3.92-2.65V1034.61l-3.71-3.71-.08-.09a6.2,6.2,0,0,1-1.73-4.3V617.77a6.23,6.23,0,0,1,1.59-4.15l3.93-4.38V594.81a92.42,92.42,0,0,1,92.42-92.42h422.36A92.38,92.38,0,0,1,1311,594.81v14.43l3.93,4.38A6.23,6.23,0,0,1,1316.56,617.77Z"/></g><g id="Layer_2" data-name="Layer 2"><path class="cls-9" d="M743.88,1061.4a14.6,14.6,0,1,1,14.6-14.6A14.62,14.62,0,0,1,743.88,1061.4Zm0-26a11.36,11.36,0,1,0,11.36,11.36A11.38,11.38,0,0,0,743.88,1035.44Z"/><path class="cls-10" d="M892.79,1438.55v-19.42h4v16.13h9.83v3.29Z"/><path class="cls-10" d="M909.28,1438.55V1419h4v19.58Z"/><path class="cls-10" d="M917.1,1438.55v-19.42h4v16.13h9.83v3.29Z"/><path class="cls-10" d="M936.34,1438.55v-8.24L929.17,1419h4.63l4.61,7.75,4.51-7.75h4.56l-7.2,11.37v8.21Z"/><path class="cls-10" d="M958.55,1431.36v-3.3h8.53v7.8a10.79,10.79,0,0,1-3.6,2.11,13.17,13.17,0,0,1-4.78.92,10.74,10.74,0,0,1-5.36-1.29,8.23,8.23,0,0,1-3.43-3.69,11.83,11.83,0,0,1-1.15-5.21,11.35,11.35,0,0,1,1.28-5.44,8.72,8.72,0,0,1,3.76-3.65,10.12,10.12,0,0,1,4.69-1,9.32,9.32,0,0,1,5.69,1.53,6.89,6.89,0,0,1,2.64,4.23l-3.93.73a4.14,4.14,0,0,0-1.55-2.28,4.74,4.74,0,0,0-2.85-.83,5.37,5.37,0,0,0-4.12,1.64,6.93,6.93,0,0,0-1.53,4.88,7.65,7.65,0,0,0,1.55,5.23,5.16,5.16,0,0,0,4.06,1.74,6.77,6.77,0,0,0,2.49-.49,8.55,8.55,0,0,0,2.14-1.18v-2.48Z"/><path class="cls-10" d="M969.92,1428.88a12.38,12.38,0,0,1,.9-5,9,9,0,0,1,1.82-2.68,7.61,7.61,0,0,1,2.53-1.77,10.88,10.88,0,0,1,4.22-.77,9.2,9.2,0,0,1,6.93,2.68q2.59,2.68,2.59,7.47a10.24,10.24,0,0,1-2.57,7.42,10.29,10.29,0,0,1-13.84,0A10.09,10.09,0,0,1,969.92,1428.88Zm4.07-.13a7.34,7.34,0,0,0,1.54,5,5.28,5.28,0,0,0,7.78,0,7.5,7.5,0,0,0,1.52-5.11,7.35,7.35,0,0,0-1.48-5,5,5,0,0,0-3.92-1.65,5,5,0,0,0-3.94,1.67A7.41,7.41,0,0,0,974,1428.75Z"/><path class="cls-10" d="M1004,1438.55v-16.26H998.2V1419h15.56v3.32H1008v16.26Z"/><path class="cls-10" d="M1014.35,1433.33v-3.75h7.37v3.75Z"/><path class="cls-10" d="M1024,1438.55V1419h4v8.7l8-8.7h5.31l-7.37,7.63,7.77,12h-5.11l-5.38-9.19-3.21,3.28v5.91Z"/><path class="cls-10" d="M1051.86,1434l3.74.63a6.13,6.13,0,0,1-2.28,3.13,6.68,6.68,0,0,1-3.89,1.08,6.35,6.35,0,0,1-5.48-2.42,8.08,8.08,0,0,1-1.4-4.89,7.82,7.82,0,0,1,1.84-5.52,6,6,0,0,1,4.66-2,6.32,6.32,0,0,1,5,2.09c1.22,1.39,1.8,3.53,1.75,6.4h-9.41a3.8,3.8,0,0,0,.91,2.6,2.84,2.84,0,0,0,2.17.93,2.31,2.31,0,0,0,1.48-.48A3,3,0,0,0,1051.86,1434Zm.21-3.79a3.64,3.64,0,0,0-.84-2.48,2.7,2.7,0,0,0-4,0,3.41,3.41,0,0,0-.79,2.43Z"/><path class="cls-10" d="M1057.08,1424.37h4l3.4,10.07,3.31-10.07h3.89l-5,13.65-.9,2.47a10.12,10.12,0,0,1-.94,1.9,4.17,4.17,0,0,1-1,1.06,4.48,4.48,0,0,1-1.43.63,7,7,0,0,1-1.91.23,9.46,9.46,0,0,1-2.13-.23l-.33-2.93a8.72,8.72,0,0,0,1.59.17,2.34,2.34,0,0,0,1.93-.77,5.37,5.37,0,0,0,1-2Z"/><path class="cls-10" d="M1073.91,1438.55V1419h3.75V1426a5.32,5.32,0,0,1,4.12-2,5.52,5.52,0,0,1,4.29,1.88,7.75,7.75,0,0,1,1.69,5.38,8.21,8.21,0,0,1-1.73,5.6,5.39,5.39,0,0,1-4.2,2,5.28,5.28,0,0,1-2.4-.61,5.87,5.87,0,0,1-2-1.8v2.08Zm3.73-7.4a6.06,6.06,0,0,0,.69,3.26,3,3,0,0,0,2.59,1.5,2.65,2.65,0,0,0,2.12-1.06,5.27,5.27,0,0,0,.87-3.35,5.49,5.49,0,0,0-.88-3.5,2.77,2.77,0,0,0-2.25-1.08,2.84,2.84,0,0,0-2.25,1A4.79,4.79,0,0,0,1077.64,1431.15Z"/><path class="cls-10" d="M1089.91,1431.26a7.75,7.75,0,0,1,.92-3.62,6.31,6.31,0,0,1,2.62-2.67,7.76,7.76,0,0,1,3.77-.92,7.09,7.09,0,0,1,5.27,2.09,7.18,7.18,0,0,1,2.06,5.28,7.29,7.29,0,0,1-2.08,5.34,7,7,0,0,1-5.22,2.12,8.22,8.22,0,0,1-3.72-.89,6.07,6.07,0,0,1-2.7-2.58A8.69,8.69,0,0,1,1089.91,1431.26Zm3.85.2a4.66,4.66,0,0,0,1,3.23,3.26,3.26,0,0,0,4.94,0,5.76,5.76,0,0,0,0-6.46,3.28,3.28,0,0,0-4.94,0A4.68,4.68,0,0,0,1093.76,1431.46Z"/><path class="cls-10" d="M1110.3,1428.7l-3.41-.62a5.26,5.26,0,0,1,2-3,7.19,7.19,0,0,1,4.16-1,9.08,9.08,0,0,1,3.74.59,3.73,3.73,0,0,1,1.73,1.51,7.65,7.65,0,0,1,.5,3.36l0,4.38a14.16,14.16,0,0,0,.19,2.76,7.9,7.9,0,0,0,.67,1.9h-3.71a11,11,0,0,1-.36-1.1c-.07-.23-.11-.37-.14-.44a6.79,6.79,0,0,1-2.06,1.4,5.88,5.88,0,0,1-2.33.47,4.88,4.88,0,0,1-3.46-1.19,4.23,4.23,0,0,1-.68-5.15,3.78,3.78,0,0,1,1.61-1.45,12.77,12.77,0,0,1,3-.87,21,21,0,0,0,3.65-.92v-.38a1.93,1.93,0,0,0-.54-1.54,3.15,3.15,0,0,0-2-.46,2.74,2.74,0,0,0-1.57.39A2.8,2.8,0,0,0,1110.3,1428.7Zm5,3c-.48.16-1.24.35-2.29.58a6.93,6.93,0,0,0-2,.65,1.56,1.56,0,0,0-.73,1.32,1.86,1.86,0,0,0,.58,1.37,2.08,2.08,0,0,0,1.5.57,3.24,3.24,0,0,0,1.94-.67,2.35,2.35,0,0,0,.89-1.24,7.26,7.26,0,0,0,.15-1.83Z"/><path class="cls-10" d="M1126.3,1438.55h-3.76v-14.18H1126v2a6.1,6.1,0,0,1,1.61-1.89,3,3,0,0,1,1.62-.45,4.67,4.67,0,0,1,2.47.71l-1.16,3.27a3.3,3.3,0,0,0-1.76-.62,2.1,2.1,0,0,0-1.34.44,3,3,0,0,0-.86,1.57,22.25,22.25,0,0,0-.31,4.75Z"/><path class="cls-10" d="M1146.36,1438.55h-3.48v-2.08a5.69,5.69,0,0,1-2.06,1.81,5.18,5.18,0,0,1-2.38.6,5.39,5.39,0,0,1-4.19-2,8,8,0,0,1-1.74-5.49,7.86,7.86,0,0,1,1.7-5.48,5.5,5.5,0,0,1,4.28-1.88,5.32,5.32,0,0,1,4.12,2V1419h3.75Zm-10-7.4a6.49,6.49,0,0,0,.63,3.29,2.84,2.84,0,0,0,2.54,1.47,2.76,2.76,0,0,0,2.2-1.1,5.06,5.06,0,0,0,.91-3.29,5.54,5.54,0,0,0-.88-3.52,2.79,2.79,0,0,0-2.26-1.08,2.83,2.83,0,0,0-2.24,1.06A4.81,4.81,0,0,0,1136.34,1431.15Z"/><rect class="cls-11" x="755.65" y="633.64" width="500.52" height="377.46"/><path class="cls-12" d="M1084.05,1030.81a84.23,84.23,0,0,1-5.85,102.73"/><path class="cls-12" d="M945.08,1030.81a84.23,84.23,0,0,0,5.85,102.73"/><path class="cls-12" d="M1056.1,1030.81a63.17,63.17,0,0,1-10.75,102.73"/><path class="cls-12" d="M973,1030.81a63.15,63.15,0,0,0,10.75,102.73"/><circle class="cls-12" cx="1014.57" cy="1078.39" r="26.4"/><path class="cls-13" d="M703.84,1208.34a10.08,10.08,0,0,1,7.37,8.09c1.15,6.75,7.53,8.15,11.11,7.13"/><path class="cls-14" d="M1315,613.62l-3.93-4.38V594.81a92.42,92.42,0,0,0-92.42-92.42H796.26a92.42,92.42,0,0,0-92.42,92.42v14.43l-3.93,4.38a6.23,6.23,0,0,0-1.59,4.15v408.74a6.22,6.22,0,0,0,1.81,4.39l3.71,3.71v284.11c0,52.75,17,100.9,78.62,123.63,33.79,12.47,72.21,18,107.6,21.08,21,1.85,69.3,3.79,117.26,3.59h.24c48,.2,96.28-1.74,117.26-3.59,35.39-3.12,73.81-8.61,107.6-21.08,61.59-22.73,78.62-70.88,78.62-123.63V1034.61l3.71-3.71a6.22,6.22,0,0,0,1.81-4.39V617.77A6.23,6.23,0,0,0,1315,613.62Zm-22.41,704.53c0,51.3-17,98.13-78.62,120.23-33.78,12.13-72.45,17.21-107.88,19.81-23.07,1.7-66.69,2.55-98.62,2.85-31.93-.3-75.55-1.15-98.62-2.85-35.43-2.6-74.1-7.68-107.88-19.81-61.6-22.1-78.62-68.93-78.62-120.23V590.3a74.74,74.74,0,0,1,74.75-74.75h420.74a74.74,74.74,0,0,1,74.75,74.75Z"/><path class="cls-13" d="M1311.05,1208.34a10.08,10.08,0,0,0-7.37,8.09c-1.15,6.75-7.53,8.15-11.11,7.13"/><rect class="cls-11" x="942.13" y="547.62" width="132.22" height="13.89" rx="6.95"/><line class="cls-11" x1="722.32" y1="1030.81" x2="1292.57" y2="1030.81"/><rect class="cls-13" x="748.71" y="1147.19" width="53.02" height="52.62"/><path class="cls-13" d="M748.71,1199.81h45.08V1175a27.9,27.9,0,0,0-28-27.8H748.71"/><rect class="cls-13" x="801.73" y="1147.19" width="53.02" height="52.62"/><path class="cls-13" d="M801.73,1199.81h45.08V1175a27.9,27.9,0,0,0-28-27.8H801.73"/><rect class="cls-13" x="854.75" y="1147.19" width="53.02" height="52.62"/><path class="cls-13" d="M854.75,1199.81h45.08V1175a27.9,27.9,0,0,0-28-27.8H854.75"/><rect class="cls-13" x="907.77" y="1147.19" width="53.02" height="52.62"/><path class="cls-13" d="M907.77,1199.81h45.08V1175a27.9,27.9,0,0,0-28-27.8H907.77"/><rect class="cls-13" x="960.79" y="1147.19" width="53.02" height="52.62"/><path class="cls-13" d="M960.79,1199.81h45.08V1175a27.9,27.9,0,0,0-28-27.8H960.79"/><rect class="cls-13" x="1225.89" y="1147.19" width="53.02" height="52.62" transform="translate(2504.8 2347) rotate(-180)"/><path class="cls-13" d="M1278.91,1147.19h-17.07a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="1172.87" y="1147.19" width="53.02" height="52.62" transform="translate(2398.76 2347) rotate(-180)"/><path class="cls-13" d="M1225.89,1147.19h-17.07a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="1119.85" y="1147.19" width="53.02" height="52.62" transform="translate(2292.72 2347) rotate(-180)"/><path class="cls-13" d="M1172.87,1147.19H1155.8a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="1066.83" y="1147.19" width="53.02" height="52.62" transform="translate(2186.68 2347) rotate(-180)"/><path class="cls-13" d="M1119.85,1147.19h-17.07a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="1013.81" y="1147.19" width="53.02" height="52.62" transform="translate(2080.64 2347) rotate(-180)"/><path class="cls-13" d="M1066.83,1147.19h-17.07a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="748.71" y="1213.46" width="53.02" height="52.62"/><path class="cls-13" d="M748.71,1266.08h45.08v-24.82a27.9,27.9,0,0,0-28-27.8H748.71"/><rect class="cls-13" x="801.73" y="1213.46" width="53.02" height="52.62"/><path class="cls-13" d="M801.73,1266.08h45.08v-24.82a27.9,27.9,0,0,0-28-27.8H801.73"/><rect class="cls-13" x="854.75" y="1213.46" width="53.02" height="52.62"/><path class="cls-13" d="M854.75,1266.08h45.08v-24.82a27.9,27.9,0,0,0-28-27.8H854.75"/><rect class="cls-13" x="907.77" y="1213.46" width="53.02" height="52.62"/><path class="cls-13" d="M907.77,1266.08h45.08v-24.82a27.9,27.9,0,0,0-28-27.8H907.77"/><rect class="cls-13" x="960.79" y="1213.46" width="53.02" height="52.62"/><path class="cls-13" d="M960.79,1266.08h45.08v-24.82a27.9,27.9,0,0,0-28-27.8H960.79"/><rect class="cls-13" x="1225.89" y="1213.46" width="53.02" height="52.62" transform="translate(2504.8 2479.54) rotate(-180)"/><path class="cls-13" d="M1278.91,1213.46h-17.07a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="1172.87" y="1213.46" width="53.02" height="52.62" transform="translate(2398.76 2479.54) rotate(-180)"/><path class="cls-13" d="M1225.89,1213.46h-17.07a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="1119.85" y="1213.46" width="53.02" height="52.62" transform="translate(2292.72 2479.54) rotate(-180)"/><path class="cls-13" d="M1172.87,1213.46H1155.8a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="1066.83" y="1213.46" width="53.02" height="52.62" transform="translate(2186.68 2479.54) rotate(-180)"/><path class="cls-13" d="M1119.85,1213.46h-17.07a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="1013.81" y="1213.46" width="53.02" height="52.62" transform="translate(2080.64 2479.54) rotate(-180)"/><path class="cls-13" d="M1066.83,1213.46h-17.07a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="748.71" y="1279.73" width="53.02" height="52.62"/><path class="cls-13" d="M748.71,1332.35h45.08v-24.82a27.9,27.9,0,0,0-28-27.8H748.71"/><rect class="cls-13" x="801.73" y="1279.73" width="53.02" height="52.62"/><path class="cls-13" d="M801.73,1332.35h45.08v-24.82a27.9,27.9,0,0,0-28-27.8H801.73"/><path class="cls-13" d="M812.55,1346h17.07a27.9,27.9,0,0,1,28,27.8V1394"/><path class="cls-13" d="M872.15,1346h17.07a27.9,27.9,0,0,1,28,27.8v24.6"/><rect class="cls-13" x="854.75" y="1279.73" width="53.02" height="52.62"/><path class="cls-13" d="M854.75,1332.35h45.08v-24.82a27.9,27.9,0,0,0-28-27.8H854.75"/><rect class="cls-13" x="907.77" y="1279.73" width="53.02" height="52.62"/><path class="cls-13" d="M907.77,1332.35h45.08v-24.82a27.9,27.9,0,0,0-28-27.8H907.77"/><rect class="cls-13" x="960.79" y="1279.73" width="53.02" height="52.62"/><path class="cls-13" d="M960.79,1332.35h45.08v-24.82a27.9,27.9,0,0,0-28-27.8H960.79"/><rect class="cls-13" x="1225.89" y="1279.73" width="53.02" height="52.62" transform="translate(2504.8 2612.09) rotate(-180)"/><path class="cls-13" d="M1278.91,1279.73h-17.07a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="1172.87" y="1279.73" width="53.02" height="52.62" transform="translate(2398.76 2612.09) rotate(-180)"/><path class="cls-13" d="M1225.89,1279.73h-17.07a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="1119.85" y="1279.73" width="53.02" height="52.62" transform="translate(2292.72 2612.09) rotate(-180)"/><path class="cls-13" d="M1172.87,1279.73H1155.8a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="1066.83" y="1279.73" width="53.02" height="52.62" transform="translate(2186.68 2612.09) rotate(-180)"/><path class="cls-13" d="M1119.85,1279.73h-17.07a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-13" x="1013.81" y="1279.73" width="53.02" height="52.62" transform="translate(2080.64 2612.09) rotate(-180)"/><path class="cls-13" d="M1066.83,1279.73h-17.07a27.91,27.91,0,0,0-28,27.8v24.82h45.08"/><rect class="cls-15" x="743.88" y="1199.81" width="540.06" height="13.65" rx="6.82"/><rect class="cls-15" x="743.88" y="1133.54" width="540.06" height="13.65" rx="6.82"/><rect class="cls-15" x="743.88" y="1266.09" width="540.06" height="13.65" rx="6.82"/><rect class="cls-15" x="743.88" y="1332.36" width="540.06" height="13.65" rx="6.82"/><path class="cls-15" d="M802.07,1346c0,26.61,14.41,41.86,40.7,46,40.67,6.37,101.92,8.23,181.39,8"/><line class="cls-15" x1="924.85" y1="1398.7" x2="924.85" y2="1346.01"/><line class="cls-15" x1="864.53" y1="1394.78" x2="864.53" y2="1346.01"/><path class="cls-13" d="M1170.33,1394V1373.8a27.9,27.9,0,0,1,28-27.8h17.07"/><path class="cls-13" d="M1110.73,1398.4v-24.6a27.9,27.9,0,0,1,28-27.8h17.07"/><path class="cls-15" d="M1225.89,1346c0,26.61-14.41,41.86-40.7,46-40.67,6.37-101.92,8.23-181.39,8"/><line class="cls-15" x1="1103.11" y1="1346.01" x2="1103.11" y2="1398.7"/><line class="cls-15" x1="1163.43" y1="1346.01" x2="1163.43" y2="1394.78"/><circle class="cls-1" cx="743.88" cy="1046.8" r="7.19"/><path class="cls-9" d="M736.69,1104a5.93,5.93,0,1,1,5.93-5.93A5.94,5.94,0,0,1,736.69,1104Zm0-10.07a4.14,4.14,0,1,0,4.14,4.14A4.15,4.15,0,0,0,736.69,1094Z"/><path class="cls-9" d="M736.69,1120.19a5.94,5.94,0,1,1,5.93-5.93A5.94,5.94,0,0,1,736.69,1120.19Zm0-10.07a4.14,4.14,0,1,0,4.14,4.14A4.14,4.14,0,0,0,736.69,1110.12Z"/><path class="cls-9" d="M736.69,1136.35a5.93,5.93,0,1,1,5.93-5.93A5.94,5.94,0,0,1,736.69,1136.35Zm0-10.07a4.14,4.14,0,1,0,4.14,4.14A4.15,4.15,0,0,0,736.69,1126.28Z"/><path class="cls-9" d="M736.69,1168.68a5.93,5.93,0,1,1,5.93-5.93A5.94,5.94,0,0,1,736.69,1168.68Zm0-10.07a4.14,4.14,0,1,0,4.14,4.14A4.15,4.15,0,0,0,736.69,1158.61Z"/><path class="cls-9" d="M736.69,1184.85a5.94,5.94,0,1,1,5.93-5.93A5.94,5.94,0,0,1,736.69,1184.85Zm0-10.07a4.14,4.14,0,1,0,4.14,4.14A4.14,4.14,0,0,0,736.69,1174.78Z"/><path class="cls-16" d="M918.05,1077.65a.77.77,0,0,1,0,.95l-8.88,11.19L903,1097.6a.76.76,0,0,1-.6.29H885.84a.76.76,0,0,1-.6-1.24l14.31-18.05a.77.77,0,0,0,0-.95l-14.32-18.05a.76.76,0,0,1,.6-1.24h16.55a.76.76,0,0,1,.6.29l6.19,7.81Z"/><path class="cls-16" d="M885,1077.65a.77.77,0,0,1,0,.95l-8.88,11.19L870,1097.6a.76.76,0,0,1-.6.29H852.81a.76.76,0,0,1-.6-1.24l14.31-18.05a.77.77,0,0,0,0-.95L852.2,1059.6a.76.76,0,0,1,.6-1.24h16.55a.76.76,0,0,1,.6.29l6.19,7.81Z"/><path class="cls-16" d="M852,1077.65a.77.77,0,0,1,0,.95l-8.88,11.19-6.19,7.81a.76.76,0,0,1-.6.29H819.78a.76.76,0,0,1-.6-1.24l14.31-18.05a.77.77,0,0,0,0-.95l-14.32-18.05a.76.76,0,0,1,.6-1.24h16.55a.76.76,0,0,1,.6.29l6.19,7.81Z"/><path class="cls-16" d="M1111.88,1077.65a.77.77,0,0,0,0,.95l8.87,11.19,6.19,7.81a.79.79,0,0,0,.6.29h16.55a.77.77,0,0,0,.6-1.24l-14.31-18.05a.77.77,0,0,1,0-.95l14.32-18.05a.77.77,0,0,0-.6-1.24h-16.56a.79.79,0,0,0-.6.29l-6.19,7.81Z"/><path class="cls-16" d="M1144.91,1077.65a.77.77,0,0,0,0,.95l8.87,11.19,6.19,7.81a.79.79,0,0,0,.6.29h16.55a.77.77,0,0,0,.6-1.24l-14.31-18.05a.77.77,0,0,1,0-.95l14.32-18.05a.77.77,0,0,0-.6-1.24h-16.56a.79.79,0,0,0-.6.29l-6.19,7.81Z"/><path class="cls-16" d="M1177.94,1077.65a.77.77,0,0,0,0,.95l8.87,11.19,6.19,7.81a.79.79,0,0,0,.6.29h16.55a.77.77,0,0,0,.6-1.24l-14.31-18.05a.77.77,0,0,1,0-.95l14.32-18.05a.77.77,0,0,0-.6-1.24H1193.6a.79.79,0,0,0-.6.29l-6.19,7.81Z"/><path class="cls-10" d="M944.82,608.91V582.67h3.47v23.14h12.92v3.1Z"/><path class="cls-10" d="M965.94,608.91V582.67h3.47v26.24Z"/><path class="cls-10" d="M975.39,608.91V582.67h3.47v23.14h12.93v3.1Z"/><path class="cls-10" d="M1000.6,608.91V597.79l-10.12-15.12h4.23l5.17,7.91q1.43,2.22,2.67,4.44c.78-1.37,1.74-2.92,2.86-4.64l5.08-7.71h4l-10.47,15.12v11.12Z"/><path class="cls-10" d="M1029.93,598.62v-3.08l11.12,0v9.74a19.85,19.85,0,0,1-5.28,3.07,15.79,15.79,0,0,1-5.58,1,14.85,14.85,0,0,1-7-1.66,10.88,10.88,0,0,1-4.77-4.79,15,15,0,0,1-1.61-7,16.24,16.24,0,0,1,1.6-7.15,10.63,10.63,0,0,1,4.61-4.93,14.47,14.47,0,0,1,6.93-1.61,13.8,13.8,0,0,1,5.14.92,8.53,8.53,0,0,1,3.61,2.57,11.52,11.52,0,0,1,2,4.3l-3.14.86a9.81,9.81,0,0,0-1.46-3.16,6.07,6.07,0,0,0-2.51-1.83,9.2,9.2,0,0,0-3.62-.69,10.48,10.48,0,0,0-4.11.73,7.58,7.58,0,0,0-2.8,1.9,9.12,9.12,0,0,0-1.66,2.6,13.68,13.68,0,0,0-1,5.28,12.86,12.86,0,0,0,1.2,5.87,7.72,7.72,0,0,0,3.52,3.51,11,11,0,0,0,4.91,1.14,11.61,11.61,0,0,0,4.4-.86,11.35,11.35,0,0,0,3.26-1.86v-4.88Z"/><path class="cls-10" d="M1045.11,596.13q0-6.54,3.51-10.23a11.92,11.92,0,0,1,9.06-3.7,12.53,12.53,0,0,1,6.55,1.74,11.32,11.32,0,0,1,4.45,4.84,15.73,15.73,0,0,1,1.53,7,15.52,15.52,0,0,1-1.61,7.15,11,11,0,0,1-4.56,4.77,13.07,13.07,0,0,1-6.38,1.62,12.42,12.42,0,0,1-6.62-1.79,11.48,11.48,0,0,1-4.42-4.89A14.84,14.84,0,0,1,1045.11,596.13Zm3.58,0a10.54,10.54,0,0,0,2.56,7.48,8.89,8.89,0,0,0,12.85,0q2.54-2.76,2.53-7.82a13.51,13.51,0,0,0-1.08-5.6,8.28,8.28,0,0,0-3.17-3.7,8.57,8.57,0,0,0-4.68-1.32,8.93,8.93,0,0,0-6.35,2.53Q1048.7,590.25,1048.69,596.18Z"/><path class="cls-10" d="M990.05,1421.1v-4.57h2a2.75,2.75,0,0,1,.93.12,1,1,0,0,1,.51.44,1.23,1.23,0,0,1,.19.69,1.16,1.16,0,0,1-.31.82,1.62,1.62,0,0,1-1,.42,1.32,1.32,0,0,1,.37.23,2.86,2.86,0,0,1,.5.61l.8,1.24h-.76l-.61-.95c-.18-.27-.32-.48-.44-.63a1.27,1.27,0,0,0-.3-.31,1.13,1.13,0,0,0-.28-.12l-.34,0h-.7v2Zm.6-2.55H992a1.84,1.84,0,0,0,.65-.09.72.72,0,0,0,.36-.27.78.78,0,0,0,.12-.41.68.68,0,0,0-.24-.54,1.07,1.07,0,0,0-.74-.21h-1.45Z"/><path class="cls-10" d="M991.8,1422.71a3.74,3.74,0,1,1,3.74-3.74A3.74,3.74,0,0,1,991.8,1422.71Zm0-6.94A3.21,3.21,0,1,0,995,1419,3.21,3.21,0,0,0,991.8,1415.77Z"/><polyline class="cls-12" points="1101.56 1065.39 1111.5 1065.39 1123.2 1051.99 1217.31 1051.99 1245.51 1093.92 1286.27 1093.92"/><polyline class="cls-12" points="927.7 1065.39 917.75 1065.39 906.06 1051.99 811.95 1051.99 783.75 1093.92 764.44 1093.92"/><polyline class="cls-12" points="985.94 1365.91 985.94 1373.8 1042.55 1373.8 1042.55 1365.91"/><path class="cls-17" d="M1266.42,1247.22H1252.5a1.86,1.86,0,0,1-1.19-.44l-5.61-4.67a3,3,0,0,1,0-4.67l5.61-4.68a1.85,1.85,0,0,1,1.19-.43h13.92a1.72,1.72,0,0,1,1.71,1.72v11.45A1.72,1.72,0,0,1,1266.42,1247.22Z"/><line class="cls-17" x1="1254.51" y1="1235.71" x2="1262.65" y2="1243.84"/><line class="cls-17" x1="1262.65" y1="1235.71" x2="1254.51" y2="1243.84"/><path class="cls-18" d="M1261.8,1296.61v6.25a7.19,7.19,0,0,1-7.19,7.19h-7.39l2.9-3.14v6.23l-2.9-3.09"/><path class="cls-10" d="M1249.84,1308s.34,3.83,0,3.83a9.67,9.67,0,0,1-2-1.42v-.91Z"/></g></svg>
\ No newline at end of file
diff --git a/core/resources/src/commonMain/composeResources/files/thinknode_m1.svg b/core/resources/src/commonMain/composeResources/files/thinknode_m1.svg
new file mode 100644
index 0000000000..27e21a0bfb
--- /dev/null
+++ b/core/resources/src/commonMain/composeResources/files/thinknode_m1.svg
@@ -0,0 +1,109 @@
+<svg xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" version="1.1" id="svg105" sodipodi:docname="thinknode_m1.svg" inkscape:version="1.4 (e7c3feb1, 2024-10-09)" viewBox="397.31 77.24 361 863.17">
+ <sodipodi:namedview id="namedview105" pagecolor="#ffffff" bordercolor="#000000" borderopacity="0.25" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:zoom="4.066786" inkscape:cx="564.94244" inkscape:cy="741.49463" inkscape:window-width="1472" inkscape:window-height="890" inkscape:window-x="0" inkscape:window-y="38" inkscape:window-maximized="1" inkscape:current-layer="Layer_3"/>
+ <defs id="defs1">
+ <style id="style1">.cls-1{fill:#353535;}.cls-2{fill:#262626;}.cls-3{fill:#cccccb;}.cls-4{fill:#2b2b2b;}.cls-5{fill:#f05043;}.cls-6{fill:#3d3d3d;}.cls-7{fill:#231f20;}.cls-8{fill:none;stroke:#000;stroke-miterlimit:10;}</style>
+ </defs>
+ <g id="Layer_3" data-name="Layer 3">
+ <path class="cls-1" d="M720.82,449.91h11.45a19.68,19.68,0,0,1,19.67,19.68V905.12a28.48,28.48,0,0,1-28.47,28.48H425.72A27.77,27.77,0,0,1,397.81,906V470.82a21,21,0,0,1,21.13-20.91h23.74" id="path1"/>
+ <rect class="cls-2" x="447.12" y="523.83" width="266.09" height="266.09" rx="22.7" id="rect1"/>
+ <rect class="cls-1" x="465.51" y="542.22" width="229.3" height="229.3" rx="12.91" id="rect2"/>
+ <rect class="cls-3" x="476.07" y="552.78" width="208.17" height="208.17" rx="7.83" id="rect3"/>
+ <path class="cls-1" d="M507.38,77.74H472.16a7,7,0,0,0-7,7V359.93L452.2,396.26v39.91H561V396.26l-13.3-36V84.15a6.41,6.41,0,0,0-6.41-6.41Z" id="path3"/>
+ <rect class="cls-2" x="454.25" y="436.17" width="104.38" height="3.65" id="rect4"/>
+ <polygon class="cls-1" points="442.68 449.91 448.16 440.69 562.98 440.69 570.51 449.91 442.68 449.91" id="polygon4"/>
+ <rect class="cls-1" x="604.37" y="355.96" width="105.26" height="60.65" rx="4.8" id="rect5"/>
+ <path class="cls-2" d="M611.2,356v-5.48a3.13,3.13,0,0,1,3.13-3.13h86.35a3.13,3.13,0,0,1,3.13,3.13V356Z" id="path5"/>
+ <rect class="cls-2" x="611.07" y="416.61" width="92.74" height="23.22" id="rect6"/>
+ <polygon class="cls-1" points="592.99 449.91 598.47 440.69 713.42 440.69 720.82 449.91 592.99 449.91" id="polygon6"/>
+ <rect class="cls-2" x="751.94" y="555.13" width="5.87" height="47.48" id="rect7"/>
+ <path class="cls-2" d="M751.94,683.87h2.72a3.15,3.15,0,0,1,3.15,3.15v49.17a3.15,3.15,0,0,1-3.15,3.15h-2.72a0,0,0,0,1,0,0V683.87A0,0,0,0,1,751.94,683.87Z" id="path7"/>
+ <path class="cls-2" d="M751.94,781.43h2.72a3.15,3.15,0,0,1,3.15,3.15v49.17a3.15,3.15,0,0,1-3.15,3.15h-2.72a0,0,0,0,1,0,0V781.43A0,0,0,0,1,751.94,781.43Z" id="path8"/>
+ <path class="cls-4" d="M425.72,933.6l17.46-41.05a15.2,15.2,0,0,1,14-9.25H702.88A15.19,15.19,0,0,1,717,892.9l15.52,39.22" id="path9"/>
+ <rect class="cls-2" x="505.03" y="841.57" width="147.52" height="24.65" rx="12.33" id="rect9"/>
+ <circle class="cls-5" cx="518.72" cy="853.89" r="5.48" id="circle9"/>
+ <circle class="cls-1" cx="640.14" cy="853.89" r="5.48" id="circle10"/>
+ <circle class="cls-1" cx="541.83" cy="853.89" r="5.48" id="circle11"/>
+ <circle class="cls-1" cx="567.67" cy="853.89" r="5.48" id="circle12"/>
+ <circle class="cls-1" cx="593.51" cy="853.89" r="5.48" id="circle13"/>
+ <circle class="cls-1" cx="616.82" cy="853.89" r="5.48" id="circle14"/>
+ <path class="cls-4" d="M428.2,933.6v4.1a2.21,2.21,0,0,0,2.22,2.21h11.22a2.21,2.21,0,0,0,2.21-2.21v-4.1" id="path14"/>
+ <path class="cls-4" d="M713.2,933.6v4.1a2.21,2.21,0,0,0,2.22,2.21h11.22a2.21,2.21,0,0,0,2.21-2.21v-4.1" id="path15"/>
+ <path class="cls-6" d="M494.46,449.91v5.59a12.22,12.22,0,0,0,1.05,4.95l8.6,19.42a9.43,9.43,0,0,0,8.62,5.61h3.61a9.43,9.43,0,0,0,9.43-9.43V449.91" id="path16"/>
+ <path class="cls-6" d="M672.56,449.91v5.59a12.22,12.22,0,0,1-1,4.95l-8.6,19.42a9.43,9.43,0,0,1-8.62,5.61h-3.61a9.43,9.43,0,0,1-9.43-9.43V449.91" id="path17"/>
+ <path class="cls-6" d="M532.42,449.91h20.35a0,0,0,0,1,0,0v28.72a6.85,6.85,0,0,1-6.85,6.85h-6.65a6.85,6.85,0,0,1-6.85-6.85V449.91A0,0,0,0,1,532.42,449.91Z" id="path18"/>
+ <path class="cls-6" d="M559.81,449.91h20.35a0,0,0,0,1,0,0v28.72a6.85,6.85,0,0,1-6.85,6.85h-6.65a6.85,6.85,0,0,1-6.85-6.85V449.91A0,0,0,0,1,559.81,449.91Z" id="path19"/>
+ <path class="cls-6" d="M587.2,449.91h20.35a0,0,0,0,1,0,0v28.72a6.85,6.85,0,0,1-6.85,6.85h-6.65a6.85,6.85,0,0,1-6.85-6.85V449.91A0,0,0,0,1,587.2,449.91Z" id="path20"/>
+ <path class="cls-6" d="M613.81,449.91h20.35a0,0,0,0,1,0,0v28.72a6.85,6.85,0,0,1-6.85,6.85h-6.65a6.85,6.85,0,0,1-6.85-6.85V449.91A0,0,0,0,1,613.81,449.91Z" id="path21"/>
+ <path class="cls-1" d="M477,924.32h-3V903.09h-7.46v-2.65h17.9v2.65H477Z" id="path51"/>
+ <path class="cls-1" d="M490.59,906.36c0,.43,0,.86,0,1.31s-.07.85-.12,1.2h.2a5.17,5.17,0,0,1,1.44-1.54,7.08,7.08,0,0,1,1.94-.92,7.81,7.81,0,0,1,2.21-.31,8.61,8.61,0,0,1,3.63.68,4.62,4.62,0,0,1,2.19,2.13,8.22,8.22,0,0,1,.73,3.74v11.67h-2.9V912.85a4.72,4.72,0,0,0-1-3.24,3.92,3.92,0,0,0-3.05-1.07,5.65,5.65,0,0,0-3.14.75,4.07,4.07,0,0,0-1.62,2.21,11.17,11.17,0,0,0-.49,3.56v9.26h-2.94V898.91h2.94Z" id="path52"/>
+ <path class="cls-1" d="M509.82,899.67a1.73,1.73,0,0,1,1.19.46,2.17,2.17,0,0,1,0,2.82,1.74,1.74,0,0,1-1.19.47,1.77,1.77,0,0,1-1.24-.47,2.24,2.24,0,0,1,0-2.82A1.76,1.76,0,0,1,509.82,899.67Zm1.44,6.73v17.92h-2.94V906.4Z" id="path53"/>
+ <path class="cls-1" d="M525.58,906.06a6.8,6.8,0,0,1,4.85,1.56c1.09,1,1.63,2.71,1.63,5v11.67h-2.91V912.85a4.67,4.67,0,0,0-1-3.24,3.88,3.88,0,0,0-3-1.07c-2,0-3.36.56-4.11,1.67a8.54,8.54,0,0,0-1.14,4.82v9.29H517V906.4h2.37l.44,2.44h.16a5.68,5.68,0,0,1,1.49-1.56,6.41,6.41,0,0,1,2-.92A8.13,8.13,0,0,1,525.58,906.06Z" id="path54"/>
+ <path class="cls-1" d="M540.53,912.18c0,.36,0,.83,0,1.41s-.07,1.08-.09,1.5h.14l.6-.77.82-1c.28-.34.52-.63.72-.85l5.72-6.05h3.44l-7.26,7.66,7.76,10.26h-3.54L542.57,916l-2,1.78v6.58h-2.91V898.91h2.91Z" id="path55"/>
+ <path class="cls-1" d="M574.81,924.32H571.3l-12.78-19.83h-.13c0,.51.08,1.12.11,1.82s.07,1.45.1,2.24,0,1.61,0,2.43v13.34h-2.77V900.44h3.48l12.74,19.77h.13c0-.36-.05-.89-.08-1.6s-.07-1.5-.1-2.35,0-1.62,0-2.34V900.44h2.81Z" id="path56"/>
+ <path class="cls-1" d="M596.48,915.33a12.32,12.32,0,0,1-.58,4,8.32,8.32,0,0,1-1.67,2.93,7,7,0,0,1-2.65,1.82,9.31,9.31,0,0,1-3.46.62,8.63,8.63,0,0,1-3.28-.62,7.29,7.29,0,0,1-2.61-1.82,8.57,8.57,0,0,1-1.72-2.93,11.76,11.76,0,0,1-.62-4,11.43,11.43,0,0,1,1-5,7.12,7.12,0,0,1,2.87-3.14,8.76,8.76,0,0,1,4.45-1.09,8.4,8.4,0,0,1,4.3,1.09,7.45,7.45,0,0,1,2.91,3.14A11,11,0,0,1,596.48,915.33Zm-13.54,0a10.93,10.93,0,0,0,.55,3.66,4.82,4.82,0,0,0,1.72,2.39,5.69,5.69,0,0,0,5.95,0,4.78,4.78,0,0,0,1.73-2.39,10.93,10.93,0,0,0,.55-3.66,10.36,10.36,0,0,0-.57-3.65,4.84,4.84,0,0,0-1.72-2.32,5,5,0,0,0-3-.82,4.5,4.5,0,0,0-4,1.8A8.79,8.79,0,0,0,582.94,915.33Z" id="path57"/>
+ <path class="cls-1" d="M607.49,924.66a6.67,6.67,0,0,1-5.35-2.33c-1.34-1.54-2-3.86-2-6.94s.67-5.4,2-7a6.74,6.74,0,0,1,5.37-2.36,7.71,7.71,0,0,1,2.44.35,6.37,6.37,0,0,1,1.81,1,6.58,6.58,0,0,1,1.3,1.34h.2c0-.29-.06-.72-.11-1.29s-.09-1-.09-1.36v-7.15H616v25.41h-2.38l-.43-2.4h-.14a6.51,6.51,0,0,1-1.3,1.38,5.9,5.9,0,0,1-1.82,1A7.4,7.4,0,0,1,607.49,924.66Zm.46-2.44c1.9,0,3.23-.52,4-1.56a7.84,7.84,0,0,0,1.16-4.7v-.53a9.84,9.84,0,0,0-1.11-5.14c-.73-1.19-2.09-1.79-4.08-1.79a4,4,0,0,0-3.56,1.89,9.46,9.46,0,0,0-1.19,5.07,9,9,0,0,0,1.19,5A4,4,0,0,0,608,922.22Z" id="path58"/>
+ <path class="cls-1" d="M628.62,906.06a7.53,7.53,0,0,1,4,1,6.62,6.62,0,0,1,2.54,2.82,9.69,9.69,0,0,1,.89,4.27v1.77H623.74a6.75,6.75,0,0,0,1.56,4.63,5.42,5.42,0,0,0,4.16,1.59,12.58,12.58,0,0,0,3-.32,16.78,16.78,0,0,0,2.72-.92v2.58a13.84,13.84,0,0,1-2.71.89,16.15,16.15,0,0,1-3.17.28,9.46,9.46,0,0,1-4.5-1,7.15,7.15,0,0,1-3-3.09,10.61,10.61,0,0,1-1.09-5,12,12,0,0,1,1-5,7.33,7.33,0,0,1,6.94-4.38Zm0,2.41a4.26,4.26,0,0,0-3.33,1.36,6.34,6.34,0,0,0-1.45,3.76h9.13a7.05,7.05,0,0,0-.47-2.68,3.94,3.94,0,0,0-1.42-1.79A4.33,4.33,0,0,0,628.59,908.47Z" id="path59"/>
+ <path class="cls-1" d="M639.36,913h8.1v2.74h-8.1Z" id="path60"/>
+ <path class="cls-1" d="M662.87,924.32,655,903.39h-.13c0,.44.08,1,.12,1.7s.06,1.45.08,2.26,0,1.65,0,2.49v14.48h-2.77V900.44h4.45L664.15,920h.13l7.49-19.57h4.42v23.88h-3V909.64c0-.78,0-1.55,0-2.32s.06-1.5.1-2.18.08-1.25.1-1.72h-.13l-8,20.9Z" id="path61"/>
+ <path class="cls-1" d="M688.16,924.32V909.41c0-.63,0-1.3,0-2s0-1.42.07-2.1,0-1.27,0-1.76c-.35.38-.66.69-.92.92s-.6.54-1,.92l-2.41,2-1.57-2,6.26-4.89H691v23.88Z" id="path62"/>
+ <path class="cls-1" d="M502.55,894.19l-2.22-2.37a14.1,14.1,0,0,1,18.94-.33l-2.13,2.44a10.9,10.9,0,0,0-7.16-2.69A10.78,10.78,0,0,0,502.55,894.19Z" id="path63"/>
+ <path class="cls-1" d="M506.38,897.85l-2.4-2.18a8.08,8.08,0,0,1,11.61-.39l-2.24,2.33a4.85,4.85,0,0,0-7,.24Z" id="path64"/>
+ </g>
+ <g id="Layer_2" data-name="Layer 2">
+ <path class="cls-8" d="M472.55,77.74h68.09a7.43,7.43,0,0,1,7.43,7.43V360.26a0,0,0,0,1,0,0h-83a0,0,0,0,1,0,0V85.17A7.43,7.43,0,0,1,472.55,77.74Z" id="path65"/>
+ <line class="cls-8" x1="465.12" y1="123.91" x2="548.07" y2="123.91" id="line65"/>
+ <line class="cls-8" x1="465.12" y1="149.74" x2="548.07" y2="149.74" id="line66"/>
+ <polyline class="cls-8" points="465.12 360.26 452.2 396.26 452.2 436.17 560.99 436.17 560.99 396.26 548.07 360.26" id="polyline66"/>
+ <line class="cls-8" x1="452.2" y1="396.26" x2="560.98" y2="396.26" id="line67"/>
+ <path class="cls-8" d="M449.69,440.17H562a3.26,3.26,0,0,1,2.56,1.55l5.93,8.19H442.68l4-7.49A3.65,3.65,0,0,1,449.69,440.17Z" id="path67"/>
+ <path class="cls-8" d="M600,440.17H712.33a3.24,3.24,0,0,1,2.56,1.55l5.93,8.19H593l4-7.49A3.65,3.65,0,0,1,600,440.17Z" id="path68"/>
+ <line class="cls-8" x1="454.45" y1="436.17" x2="454.45" y2="439.83" id="line68"/>
+ <line class="cls-8" x1="558.64" y1="436.17" x2="558.64" y2="439.83" id="line69"/>
+ <rect class="cls-8" x="604.37" y="355.96" width="105.26" height="60.65" rx="4.87" id="rect69"/>
+ <line class="cls-8" x1="611.07" y1="416.61" x2="611.07" y2="439.83" id="line70"/>
+ <line class="cls-8" x1="703.81" y1="416.61" x2="703.81" y2="439.83" id="line71"/>
+ <path class="cls-8" d="M614.2,347.35h86.48a3.13,3.13,0,0,1,3.13,3.13V356a0,0,0,0,1,0,0H611.07a0,0,0,0,1,0,0v-5.48A3.13,3.13,0,0,1,614.2,347.35Z" id="path71"/>
+ <line class="cls-8" x1="570.51" y1="449.91" x2="592.99" y2="449.91" id="line72"/>
+ <path class="cls-8" d="M720.82,449.91h11.45a19.68,19.68,0,0,1,19.67,19.68V905.12a28.48,28.48,0,0,1-28.47,28.48H425.72A27.77,27.77,0,0,1,397.81,906V470.82a21,21,0,0,1,21.13-20.91h23.74" id="path72"/>
+ <rect class="cls-8" x="447.12" y="523.83" width="266.09" height="266.09" rx="22.7" id="rect72"/>
+ <rect class="cls-8" x="465.51" y="542.22" width="229.3" height="229.3" rx="12.91" id="rect73"/>
+ <rect class="cls-8" x="476.07" y="552.78" width="208.17" height="208.17" rx="7.83" id="rect74"/>
+ <path class="cls-8" d="M494.46,449.91v5.59a12.22,12.22,0,0,0,1.05,4.95l8.6,19.42a9.43,9.43,0,0,0,8.62,5.61h3.61a9.43,9.43,0,0,0,9.43-9.43V449.91" id="path74"/>
+ <path class="cls-8" d="M672.56,449.91v5.59a12.22,12.22,0,0,1-1,4.95l-8.6,19.42a9.43,9.43,0,0,1-8.62,5.61h-3.61a9.43,9.43,0,0,1-9.43-9.43V449.91" id="path75"/>
+ <path class="cls-8" d="M532.42,449.91h20.35a0,0,0,0,1,0,0v28.72a6.85,6.85,0,0,1-6.85,6.85h-6.65a6.85,6.85,0,0,1-6.85-6.85V449.91A0,0,0,0,1,532.42,449.91Z" id="path76"/>
+ <path class="cls-8" d="M559.81,449.91h20.35a0,0,0,0,1,0,0v28.72a6.85,6.85,0,0,1-6.85,6.85h-6.65a6.85,6.85,0,0,1-6.85-6.85V449.91A0,0,0,0,1,559.81,449.91Z" id="path77"/>
+ <path class="cls-8" d="M587.2,449.91h20.35a0,0,0,0,1,0,0v28.72a6.85,6.85,0,0,1-6.85,6.85h-6.65a6.85,6.85,0,0,1-6.85-6.85V449.91A0,0,0,0,1,587.2,449.91Z" id="path78"/>
+ <path class="cls-8" d="M613.81,449.91h20.35a0,0,0,0,1,0,0v28.72a6.85,6.85,0,0,1-6.85,6.85h-6.65a6.85,6.85,0,0,1-6.85-6.85V449.91A0,0,0,0,1,613.81,449.91Z" id="path79"/>
+ <rect class="cls-8" x="751.94" y="555.13" width="5.87" height="47.48" id="rect79"/>
+ <path class="cls-8" d="M751.94,683.87h2.72a3.15,3.15,0,0,1,3.15,3.15v49.17a3.15,3.15,0,0,1-3.15,3.15h-2.72a0,0,0,0,1,0,0V683.87A0,0,0,0,1,751.94,683.87Z" id="path80"/>
+ <path class="cls-8" d="M751.94,781.43h2.72a3.15,3.15,0,0,1,3.15,3.15v49.17a3.15,3.15,0,0,1-3.15,3.15h-2.72a0,0,0,0,1,0,0V781.43A0,0,0,0,1,751.94,781.43Z" id="path81"/>
+ <path class="cls-8" d="M425.72,933.6l17.46-41.05a15.2,15.2,0,0,1,14-9.25H702.88A15.19,15.19,0,0,1,717,892.9l15.52,39.22" id="path82"/>
+ <rect class="cls-8" x="505.03" y="841.57" width="147.52" height="24.65" rx="12.33" id="rect82"/>
+ <circle class="cls-8" cx="518.72" cy="853.89" r="5.48" id="circle82"/>
+ <circle class="cls-8" cx="640.14" cy="853.89" r="5.48" id="circle83"/>
+ <circle class="cls-8" cx="541.83" cy="853.89" r="5.48" id="circle84"/>
+ <circle class="cls-8" cx="567.67" cy="853.89" r="5.48" id="circle85"/>
+ <circle class="cls-8" cx="593.51" cy="853.89" r="5.48" id="circle86"/>
+ <circle class="cls-8" cx="616.82" cy="853.89" r="5.48" id="circle87"/>
+ <line class="cls-8" x1="430.68" y1="572.74" x2="430.68" y2="602.61" id="line87"/>
+ <line class="cls-8" x1="424.42" y1="595.43" x2="424.42" y2="578.11" id="line88"/>
+ <line class="cls-8" x1="438.21" y1="595.43" x2="438.21" y2="578.11" id="line89"/>
+ <line class="cls-8" x1="430.68" y1="644.74" x2="430.68" y2="674.61" id="line90"/>
+ <line class="cls-8" x1="424.42" y1="667.43" x2="424.42" y2="650.11" id="line91"/>
+ <line class="cls-8" x1="438.21" y1="667.43" x2="438.21" y2="650.11" id="line92"/>
+ <line class="cls-8" x1="430.68" y1="716.74" x2="430.68" y2="746.61" id="line93"/>
+ <line class="cls-8" x1="424.42" y1="739.43" x2="424.42" y2="722.11" id="line94"/>
+ <line class="cls-8" x1="438.21" y1="739.43" x2="438.21" y2="722.11" id="line95"/>
+ <line class="cls-8" x1="730.03" y1="572.74" x2="730.03" y2="602.61" id="line96"/>
+ <line class="cls-8" x1="723.77" y1="595.43" x2="723.77" y2="578.11" id="line97"/>
+ <line class="cls-8" x1="737.56" y1="595.43" x2="737.56" y2="578.11" id="line98"/>
+ <line class="cls-8" x1="730.03" y1="644.74" x2="730.03" y2="674.61" id="line99"/>
+ <line class="cls-8" x1="723.77" y1="667.43" x2="723.77" y2="650.11" id="line100"/>
+ <line class="cls-8" x1="737.56" y1="667.43" x2="737.56" y2="650.11" id="line101"/>
+ <line class="cls-8" x1="730.03" y1="716.74" x2="730.03" y2="746.61" id="line102"/>
+ <line class="cls-8" x1="723.77" y1="739.43" x2="723.77" y2="722.11" id="line103"/>
+ <line class="cls-8" x1="737.56" y1="739.43" x2="737.56" y2="722.11" id="line104"/>
+ <path class="cls-8" d="M428.2,933.6v4.1a2.21,2.21,0,0,0,2.22,2.21h11.22a2.21,2.21,0,0,0,2.21-2.21v-4.1" id="path104"/>
+ <path class="cls-8" d="M713.2,933.6v4.1a2.21,2.21,0,0,0,2.22,2.21h11.22a2.21,2.21,0,0,0,2.21-2.21v-4.1" id="path105"/>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/core/resources/src/commonMain/composeResources/files/tracker-t1000-e.svg b/core/resources/src/commonMain/composeResources/files/tracker-t1000-e.svg
new file mode 100644
index 0000000000..6f7a06c96d
--- /dev/null
+++ b/core/resources/src/commonMain/composeResources/files/tracker-t1000-e.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="667.51 476.78 664.98 1035.52"><defs><style>.cls-1{fill:#333;}.cls-11,.cls-15,.cls-16,.cls-17,.cls-2,.cls-4{fill:#cbcccb;}.cls-2{opacity:0.49;}.cls-3{fill:#dfac52;}.cls-4{opacity:0.33;}.cls-5,.cls-9{fill:#373838;}.cls-10,.cls-13,.cls-6,.cls-7,.cls-8{fill:none;stroke-miterlimit:10;}.cls-10,.cls-6,.cls-7{stroke:#050606;}.cls-6{stroke-width:2.34px;}.cls-7,.cls-8{stroke-width:2.41px;}.cls-8{stroke:#fff;}.cls-9{opacity:0.43;}.cls-10{stroke-width:2.1px;}.cls-12{fill:#fff;}.cls-13{stroke:#dfac52;stroke-width:1.26px;}.cls-14{fill:#b7802b;}.cls-15{opacity:0.5;}.cls-16{opacity:0.44;}.cls-17{opacity:0.19;}</style></defs><g id="Layer_7" data-name="Layer 7"><path class="cls-1" d="M1273.43,478H726.56a57.85,57.85,0,0,0-57.84,57.86v917.4a57.85,57.85,0,0,0,57.84,57.85h546.87a57.86,57.86,0,0,0,57.86-57.85V535.85A57.87,57.87,0,0,0,1273.43,478Zm-180.85,58.15a17.73,17.73,0,0,1-12.6,5.22H921.92a17.83,17.83,0,0,1,0-35.65H1080a17.83,17.83,0,0,1,12.6,30.43Z"></path><path class="cls-2" d="M1275.46,490.32H724.6A43.64,43.64,0,0,0,681,534v921.2a43.65,43.65,0,0,0,43.64,43.63h550.86a43.63,43.63,0,0,0,43.63-43.63V534A43.63,43.63,0,0,0,1275.46,490.32Zm-182.88,45.82a17.73,17.73,0,0,1-12.6,5.22H921.92a17.83,17.83,0,0,1,0-35.65H1080a17.83,17.83,0,0,1,12.6,30.43Z"></path><rect class="cls-3" x="1226.45" y="1082.09" width="61.6" height="368.92" rx="12.69"></rect><rect class="cls-4" x="699.17" y="1071.28" width="599.02" height="391.54" rx="14.88"></rect><rect class="cls-2" x="716.37" y="1082.09" width="497.34" height="368.92" rx="20.68"></rect><path class="cls-3" d="M1112.31,1112.18A119.83,119.83,0,1,1,992.49,992.34,119.83,119.83,0,0,1,1112.31,1112.18Z"></path><circle class="cls-2" cx="992.48" cy="1112.18" r="150.8"></circle><path class="cls-5" d="M992.48,1000.79a111.39,111.39,0,1,0,111.38,111.39A111.39,111.39,0,0,0,992.48,1000.79Zm0,199.64a88.26,88.26,0,1,1,88.25-88.25A88.26,88.26,0,0,1,992.48,1200.43Z"></path><path class="cls-3" d="M1080.73,1112.18a88.25,88.25,0,1,1-88.25-88.26A88.26,88.26,0,0,1,1080.73,1112.18Z"></path><rect class="cls-6" x="680.97" y="490.32" width="638.12" height="1008.46" rx="43.63"></rect><rect class="cls-7" x="668.71" y="477.99" width="662.57" height="1033.11" rx="57.85"></rect><circle class="cls-8" cx="992.48" cy="1112.18" r="150.8"></circle><circle class="cls-9" cx="1000" cy="702.01" r="103.21"></circle><circle class="cls-8" cx="1000" cy="702.01" r="117.37"></circle><path class="cls-7" d="M992.48,1000.79a111.39,111.39,0,1,0,111.38,111.39A111.39,111.39,0,0,0,992.48,1000.79Zm0,199.64a88.26,88.26,0,1,1,88.25-88.25A88.26,88.26,0,0,1,992.48,1200.43Z"></path><rect class="cls-10" x="904.09" y="505.72" width="193.71" height="35.64" rx="17.82"></rect><path class="cls-7" d="M1080.73,1112.18a88.25,88.25,0,1,1-88.25-88.26A88.26,88.26,0,0,1,1080.73,1112.18Z"></path><circle class="cls-11" cx="1000" cy="928.96" r="63.38"></circle><circle class="cls-12" cx="1000" cy="928.96" r="35.27"></circle><circle class="cls-3" cx="1000" cy="702.01" r="25.23"></circle><rect class="cls-13" x="965.08" y="672.02" width="68.35" height="59.63" rx="4.15"></rect><circle class="cls-11" cx="973.01" cy="680.85" r="5.69"></circle><circle class="cls-11" cx="973.01" cy="723.01" r="5.69"></circle><circle class="cls-11" cx="1026.01" cy="680.85" r="5.69"></circle><circle class="cls-11" cx="1026.01" cy="723.01" r="5.69"></circle><rect class="cls-14" x="996.04" y="690.54" width="6.43" height="22.58" transform="translate(1701.09 -297.42) rotate(90)"></rect><rect class="cls-14" x="996.04" y="690.54" width="6.43" height="22.58"></rect><circle class="cls-3" cx="833.1" cy="678.6" r="6.37"></circle><circle class="cls-3" cx="833.1" cy="747.04" r="6.37"></circle><circle class="cls-3" cx="833.1" cy="709.01" r="6.37"></circle><circle class="cls-3" cx="1194.88" cy="684.17" r="6.37"></circle><circle class="cls-3" cx="1248.54" cy="781.82" r="6.37"></circle><circle class="cls-3" cx="1248.54" cy="813.01" r="6.37"></circle><circle class="cls-3" cx="1207.62" cy="831.46" r="6.37"></circle><circle class="cls-3" cx="1248.54" cy="844.2" r="6.37"></circle><circle class="cls-3" cx="1248.54" cy="875.38" r="6.37"></circle><circle class="cls-3" cx="1248.54" cy="906.57" r="6.37"></circle><circle class="cls-3" cx="1063.37" cy="869.03" r="6.37"></circle><circle class="cls-3" cx="820.36" cy="856" r="6.37"></circle><circle class="cls-3" cx="910.6" cy="915.24" r="6.37"></circle><circle class="cls-3" cx="839.47" cy="880.73" r="6.37"></circle><circle class="cls-3" cx="870.09" cy="928.96" r="6.37"></circle><circle class="cls-3" cx="870.09" cy="764.54" r="6.37"></circle><circle class="cls-3" cx="894.78" cy="791" r="6.37"></circle><circle class="cls-3" cx="826.73" cy="915.24" r="6.37"></circle><circle class="cls-3" cx="820.36" cy="883.42" r="6.37"></circle><circle class="cls-3" cx="872.65" cy="684.17" r="6.37"></circle><circle class="cls-3" cx="855.71" cy="775.45" r="6.37"></circle><circle class="cls-3" cx="1136.91" cy="784.63" r="6.37"></circle><circle class="cls-3" cx="1182.14" cy="902.5" r="6.37"></circle><circle class="cls-3" cx="1205.52" cy="877.05" r="6.37"></circle><circle class="cls-3" cx="1194.88" cy="762.71" r="6.37"></circle><circle class="cls-3" cx="1211.89" cy="784.63" r="6.37"></circle><rect class="cls-11" x="888.41" y="819.38" width="9.14" height="9.14"></rect><rect class="cls-11" x="1130.54" y="917.04" width="9.14" height="9.14"></rect><rect class="cls-11" x="896.58" y="874.81" width="9.14" height="9.14"></rect><rect class="cls-11" x="1112.8" y="839.63" width="9.14" height="9.14"></rect><rect class="cls-11" x="1166.63" y="814.81" width="9.14" height="9.14"></rect><circle class="cls-5" cx="788.67" cy="598.8" r="12.53"></circle><circle class="cls-5" cx="1188.51" cy="558.44" r="12.53"></circle><circle class="cls-5" cx="1201.25" cy="994.55" r="12.53"></circle><circle class="cls-5" cx="763.86" cy="961.38" r="12.53"></circle><polygon class="cls-15" points="747.85 637.69 747.85 921.61 705.73 921.61 705.73 637.69 723.33 637.69 723.33 896.12 731.42 896.12 731.42 637.69 747.85 637.69"></polygon><rect class="cls-5" x="716.37" y="1462.82" width="183.41" height="10.76"></rect><rect class="cls-5" x="1080.73" y="1462.82" width="62.55" height="10.76"></rect><rect class="cls-16" x="784.29" y="632.6" width="4.38" height="391.32"></rect><rect class="cls-16" x="1219.52" y="632.6" width="4.38" height="391.32"></rect><rect class="cls-3" x="752.71" y="871.99" width="11.15" height="41.04"></rect><rect class="cls-3" x="802.25" y="935.33" width="7.3" height="18.13"></rect><rect class="cls-3" x="799.82" y="1010.51" width="4.76" height="4.76"></rect><rect class="cls-3" x="831.13" y="994.55" width="6.25" height="6.25"></rect><rect class="cls-11" x="813.99" y="1099.67" width="6.37" height="323.31"></rect><path class="cls-17" d="M1275.46,490.32H724.6A43.64,43.64,0,0,0,681,534v921.2a43.65,43.65,0,0,0,43.64,43.63h550.86a43.63,43.63,0,0,0,43.63-43.63V534A43.63,43.63,0,0,0,1275.46,490.32Zm-182.88,45.82a17.73,17.73,0,0,1-12.6,5.22H921.92a17.83,17.83,0,0,1,0-35.65H1080a17.83,17.83,0,0,1,12.6,30.43Z"></path></g></svg>
\ No newline at end of file
diff --git a/core/resources/src/commonMain/composeResources/values/strings.xml b/core/resources/src/commonMain/composeResources/values/strings.xml
index affb5fbe8a..f16173afa7 100644
--- a/core/resources/src/commonMain/composeResources/values/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values/strings.xml
@@ -29,6 +29,7 @@
<string name="a11y_node_role">role %1$s</string>
<string name="a11y_node_signal">signal %1$s</string>
<string name="a11y_nodes_at_hop">Hop %1$d: %2$d nodes</string>
+ <string name="about">About</string>
<string name="accept">Accept</string>
<string name="acknowledgements">Acknowledgements</string>
<!-- ACTION -->
@@ -113,6 +114,7 @@
<string name="app_too_old">Application update required</string>
<string name="app_version">Version</string>
<string name="apply">Apply</string>
+ <string name="apps">Apps</string>
<!-- AQI -->
<string name="aqi">AQI</string>
<string name="aqi_good">Good</string>
@@ -315,6 +317,7 @@
<string name="contrast_standard">Standard</string>
<string name="conversations">Conversations</string>
<string name="copy">Copy</string>
+ <string name="copyright_notice">Meshtastic® Copyright Meshtastic LLC</string>
<string name="create_your_own_networks">Create Your Own Networks</string>
<string name="critical_alert">Critical Alert!</string>
<string name="critical_alerts">Critical Alerts</string>
@@ -562,6 +565,7 @@
<string name="doc_title_translate">Translate the App</string>
<string name="doc_title_units">Units & Locale</string>
<string name="doc_title_widget">Home Screen Widget</string>
+ <string name="documentation">Documentation</string>
<string name="done">Done</string>
<string name="dont_show_again_for_device">Don't show again for this device</string>
<string name="double_tap_as_button_press">Double Tap as Button</string>
@@ -794,6 +798,7 @@
<string name="geofence_remove_area">Remove area</string>
<string name="geofence_set_area">Set area on map</string>
<string name="get_started">Get started</string>
+ <string name="github_repository">GitHub Repository</string>
<string name="good">Good</string>
<!-- GPIO -->
<string name="gpio">GPIO</string>
@@ -1192,6 +1197,8 @@
<string name="name_cannot_be_empty">Name cannot be empty.</string>
<string name="navigate_back">Navigate Back</string>
<string name="navigate_into_label">Navigate Into</string>
+ <string name="need_hardware">Need Hardware?</string>
+ <string name="need_hardware_description">Meshtastic requires a compatible device. Our backers and partners offer ready-to-use hardware. Here are some of the most popular options.</string>
<string name="neighbor_info">Neighbor Info</string>
<string name="neighbor_info_config">Neighbor Info Config</string>
<string name="neighbor_info_enabled">Neighbor Info enabled</string>
@@ -1417,6 +1424,7 @@
<string name="primary_channel_feature">Periodic position and telemetry broadcast</string>
<string name="privacy_url" translatable="false">https://meshtastic.org/docs/legal/privacy/</string>
<string name="private_key">Private Key</string>
+ <string name="project_information">Project information</string>
<string name="provide_location_to_mesh">Provide phone location to mesh</string>
<string name="provider_name_exists">Provider name exists.</string>
<string name="proxy_to_client_enabled">Proxy to client enabled</string>
@@ -1894,7 +1902,10 @@
<string name="waypoint_edit">Edit waypoint</string>
<string name="waypoint_new">New waypoint</string>
<string name="waypoint_received">Received waypoint: %1$s</string>
+ <string name="website">Website</string>
<string name="weight">Weight</string>
+ <string name="what_is_meshtastic">What is Meshtastic?</string>
+ <string name="what_is_meshtastic_description">An open source, off-grid, decentralized, mesh network that runs on affordable, low-power radios.</string>
<!-- WIFI -->
<string name="wifi_config">WiFi Options</string>
<string name="wifi_devices">Wi-Fi Provisioning for mPWRD-OS</string>
diff --git a/feature/settings/README.md b/feature/settings/README.md
index b022061de7..211762db3a 100644
--- a/feature/settings/README.md
+++ b/feature/settings/README.md
@@ -12,7 +12,10 @@ The main entry point for application-wide settings.
Handles the complex logic of reading and writing configuration to the Meshtastic device over the radio link (BLE, USB, or TCP).
### 3. `AboutScreen`
-Displays version information, licenses, and project links.
+Displays what Meshtastic is, a "Need Hardware?" row, version information, and project links.
+
+### 4. `AcknowledgementsScreen`
+Displays the open-source libraries the app is built on, with their licenses.
## Validation Reference
- See [settings-validation.md](settings-validation.md) for detailed radio/module settings validation rules used by this module.
diff --git a/feature/settings/build.gradle.kts b/feature/settings/build.gradle.kts
index 3bd0ab5d11..619a4a788a 100644
--- a/feature/settings/build.gradle.kts
+++ b/feature/settings/build.gradle.kts
@@ -42,6 +42,7 @@ kotlin {
implementation(libs.kotlinx.collections.immutable)
implementation(libs.aboutlibraries.compose.m3)
+ implementation(libs.coil)
}
androidMain.dependencies {
diff --git a/feature/settings/detekt-baseline.xml b/feature/settings/detekt-baseline.xml
index 4c5d4170bd..61a78ee999 100644
--- a/feature/settings/detekt-baseline.xml
+++ b/feature/settings/detekt-baseline.xml
@@ -38,10 +38,10 @@
<ID>MagicNumber:EditDeviceProfileDialog.kt:ProfileField.FIXED_POSITION$6</ID>
<ID>MagicNumber:EditDeviceProfileDialog.kt:ProfileField.MODULE_CONFIG$5</ID>
<ID>ModifierClickableOrder:ChannelScreen.kt:clickable(onClick = onClick)</ID>
- <ID>ModifierMissing:AboutScreen.kt:@Composable fun AboutScreen</ID>
<ID>ModifierMissing:AdministrationScreen.kt:@Composable fun AdministrationScreen</ID>
<ID>ModifierMissing:AmbientLightingConfigItemList.kt:@Composable fun AmbientLightingConfigScreen</ID>
<ID>ModifierMissing:AppInfoSection.kt:@Composable fun AppInfoSection</ID>
+ <ID>ModifierMissing:AcknowledgementsScreen.kt:@Composable fun AcknowledgementsScreen</ID>
<ID>ModifierMissing:AudioConfigItemList.kt:@Composable fun AudioConfigScreen</ID>
<ID>ModifierMissing:BluetoothConfigItemList.kt:@Composable fun BluetoothConfigScreen</ID>
<ID>ModifierMissing:CannedMessageConfigItemList.kt:@Suppress("DEPRECATION", "LongMethod") @Composable fun CannedMessageConfigScreen</ID>
diff --git a/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/component/AppInfoSection.kt b/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/component/AppInfoSection.kt
index fef5059c13..6bf098b0f5 100644
--- a/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/component/AppInfoSection.kt
+++ b/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/component/AppInfoSection.kt
@@ -34,7 +34,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.jetbrains.compose.resources.stringResource
import org.meshtastic.core.resources.Res
-import org.meshtastic.core.resources.acknowledgements
+import org.meshtastic.core.resources.about
import org.meshtastic.core.resources.app_notifications
import org.meshtastic.core.resources.app_version
import org.meshtastic.core.resources.info
@@ -99,7 +99,7 @@ fun AppInfoSection(
}
ListItem(
- text = stringResource(Res.string.acknowledgements),
+ text = stringResource(Res.string.about),
leadingIcon = MeshtasticIcons.Info,
trailingIcon = MeshtasticIcons.ChevronRight,
) {
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/AboutScreen.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/AboutScreen.kt
index cb8a1e38a4..296f748446 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/AboutScreen.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/AboutScreen.kt
@@ -14,113 +14,272 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-@file:OptIn(ExperimentalMaterial3ExpressiveApi::class)
-
package org.meshtastic.feature.settings
+import androidx.compose.animation.Crossfade
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.clickable
+import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
-import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
-import androidx.compose.material3.HorizontalDivider
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.rememberScrollState
+import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableIntStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.platform.LocalUriHandler
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
-import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer
-import com.mikepenz.aboutlibraries.ui.compose.produceLibraries
-import com.mikepenz.aboutlibraries.ui.compose.variant.LibraryBadges
+import coil3.compose.AsyncImage
+import coil3.compose.LocalPlatformContext
+import coil3.request.ImageRequest
+import kotlinx.coroutines.delay
import org.jetbrains.compose.resources.stringResource
import org.meshtastic.core.resources.Res
+import org.meshtastic.core.resources.about
import org.meshtastic.core.resources.acknowledgements
-import org.meshtastic.core.resources.library_count
-import org.meshtastic.core.resources.open_source_description
-import org.meshtastic.core.resources.open_source_libraries
+import org.meshtastic.core.resources.app_version
+import org.meshtastic.core.resources.apps
+import org.meshtastic.core.resources.copyright_notice
+import org.meshtastic.core.resources.documentation
+import org.meshtastic.core.resources.github_repository
+import org.meshtastic.core.resources.need_hardware
+import org.meshtastic.core.resources.need_hardware_description
+import org.meshtastic.core.resources.project_information
+import org.meshtastic.core.resources.website
+import org.meshtastic.core.resources.what_is_meshtastic
+import org.meshtastic.core.resources.what_is_meshtastic_description
+import org.meshtastic.core.ui.component.ListItem
import org.meshtastic.core.ui.component.MainAppBar
+import org.meshtastic.core.ui.icon.ChevronRight
+import org.meshtastic.core.ui.icon.Code
+import org.meshtastic.core.ui.icon.HelpOutline
+import org.meshtastic.core.ui.icon.Info
+import org.meshtastic.core.ui.icon.Language
+import org.meshtastic.core.ui.icon.Memory
+import org.meshtastic.core.ui.icon.MeshtasticIcons
+import org.meshtastic.core.ui.theme.AppTheme
+import org.meshtastic.feature.settings.component.ExpressiveSection
+
+private const val CAROUSEL_INTERVAL_MS = 3000L
+private const val CROSSFADE_DURATION_MS = 500
+private val CAROUSEL_IMAGE_WIDTH = 110.dp
+private val CAROUSEL_IMAGE_HEIGHT = 130.dp
+
+private const val HARDWARE_URL = "https://meshtastic.org/#hardware"
+private const val GITHUB_REPO_URL = "https://github.com/meshtastic/Meshtastic-Android"
+private const val WEBSITE_URL = "https://meshtastic.org"
+private const val DOCS_URL = "https://meshtastic.org/docs/getting-started"
+
+private data class PopularDevice(val name: String, val svgFileName: String)
+
+private val POPULAR_DEVICES =
+ listOf(
+ PopularDevice(name = "T-Deck Plus", svgFileName = "t-deck.svg"),
+ PopularDevice(name = "R1 Neo", svgFileName = "muzi_r1_neo.svg"),
+ PopularDevice(name = "T1000-E Tracker", svgFileName = "tracker-t1000-e.svg"),
+ PopularDevice(name = "Station G2", svgFileName = "station-g2.svg"),
+ PopularDevice(name = "WisMesh Tag", svgFileName = "rak_wismesh_tag.svg"),
+ PopularDevice(name = "Mesh Pocket", svgFileName = "heltec_mesh_pocket.svg"),
+ PopularDevice(name = "ThinkNode M1", svgFileName = "thinknode_m1.svg"),
+ )
/**
- * Shared About/Acknowledgements screen using the multiplatform [LibrariesContainer] composable and [produceLibraries]
- * from the AboutLibraries KMP library.
- *
- * Leverages the full M3 [LibrariesContainer] API:
- * - **header**: app branding with descriptive text
- * - **divider**: [HorizontalDivider] between library items for clean visual separation
- * - **footer**: total library count summary
- * - **contentPadding**: proper LazyColumn padding (avoids clipping during scroll)
- * - **badges**: per-row metadata badges (author, version, description, license, funding) via [LibraryBadges]
- * - **license dialog**: built-in license dialog wired by default via the container's `licenseDialogBody`
- *
- * Each platform provides a [jsonProvider] lambda that loads the library definitions JSON
- *
- * @see <a href="https://github.com/mikepenz/AboutLibraries">AboutLibraries KMP</a>
+ * About screen displaying general information about Meshtastic, hardware recommendations, repository and version
+ * details, acknowledgements, and project links.
*/
@Composable
-fun AboutScreen(onNavigateUp: () -> Unit, jsonProvider: suspend () -> String) {
- val libraries by produceLibraries(jsonProvider)
+fun AboutScreen(
+ appVersionName: String,
+ onNavigateUp: () -> Unit,
+ onNavigateToAcknowledgements: () -> Unit,
+ modifier: Modifier = Modifier,
+) {
+ val uriHandler = LocalUriHandler.current
Scaffold(
+ modifier = modifier,
topBar = {
MainAppBar(
- title = stringResource(Res.string.acknowledgements),
+ title = stringResource(Res.string.about),
canNavigateUp = true,
onNavigateUp = onNavigateUp,
ourNode = null,
showNodeChip = false,
- actions = {},
onClickChip = {},
+ actions = {},
)
},
- ) { paddingValues ->
- LibrariesContainer(
- libraries = libraries,
- modifier = Modifier.fillMaxSize(),
- contentPadding = paddingValues,
- badges = LibraryBadges(version = true, author = true, description = true, license = true, funding = true),
- header = {
- item {
- AboutHeader()
- HorizontalDivider()
- }
- },
- divider = { HorizontalDivider() },
- footer = {
- val count = libraries?.libraries?.size ?: 0
- if (count > 0) {
- item {
- HorizontalDivider()
- Box(modifier = Modifier.fillMaxWidth().padding(16.dp), contentAlignment = Alignment.Center) {
- Text(
- text = stringResource(Res.string.library_count, count),
- style = MaterialTheme.typography.labelMedium,
- color = MaterialTheme.colorScheme.onSurfaceVariant,
- )
- }
- }
- }
- },
- )
+ ) { innerPadding ->
+ Column(
+ modifier =
+ Modifier.fillMaxSize()
+ .padding(innerPadding)
+ .verticalScroll(rememberScrollState())
+ .padding(horizontal = 16.dp, vertical = 16.dp),
+ verticalArrangement = Arrangement.spacedBy(16.dp),
+ ) {
+ WhatIsMeshtasticSection()
+ AppsSection(
+ appVersionName = appVersionName,
+ onNavigateToAcknowledgements = onNavigateToAcknowledgements,
+ onOpenHardwareLink = { uriHandler.openUri(HARDWARE_URL) },
+ onOpenRepoLink = { uriHandler.openUri(GITHUB_REPO_URL) },
+ )
+ ProjectInformationSection(
+ onOpenWebsite = { uriHandler.openUri(WEBSITE_URL) },
+ onOpenDocs = { uriHandler.openUri(DOCS_URL) },
+ )
+ CopyrightFooter()
+ }
}
}
@Composable
-private fun AboutHeader() {
- Column(modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp, vertical = 12.dp)) {
+private fun WhatIsMeshtasticSection(modifier: Modifier = Modifier) {
+ ExpressiveSection(title = stringResource(Res.string.what_is_meshtastic), modifier = modifier) {
Text(
- text = stringResource(Res.string.open_source_libraries),
- style = MaterialTheme.typography.titleMediumEmphasized,
- color = MaterialTheme.colorScheme.primary,
+ text = stringResource(Res.string.what_is_meshtastic_description),
+ modifier = Modifier.padding(16.dp),
+ style = MaterialTheme.typography.bodyLarge,
+ color = MaterialTheme.colorScheme.onSurface,
)
- Text(
- text = stringResource(Res.string.open_source_description),
- style = MaterialTheme.typography.bodySmall,
- color = MaterialTheme.colorScheme.onSurfaceVariant,
- modifier = Modifier.padding(top = 4.dp),
+ }
+}
+
+@Composable
+private fun AppsSection(
+ appVersionName: String,
+ onNavigateToAcknowledgements: () -> Unit,
+ onOpenHardwareLink: () -> Unit,
+ onOpenRepoLink: () -> Unit,
+ modifier: Modifier = Modifier,
+) {
+ ExpressiveSection(title = stringResource(Res.string.apps), modifier = modifier) {
+ NeedHardwareRow(onOpenHardwareLink = onOpenHardwareLink)
+ ListItem(
+ text = stringResource(Res.string.github_repository),
+ leadingIcon = MeshtasticIcons.Code,
+ trailingIcon = MeshtasticIcons.ChevronRight,
+ onClick = onOpenRepoLink,
+ )
+ ListItem(
+ text = stringResource(Res.string.app_version),
+ leadingIcon = MeshtasticIcons.Memory,
+ supportingText = appVersionName,
+ trailingIcon = null,
+ )
+ ListItem(
+ text = stringResource(Res.string.acknowledgements),
+ leadingIcon = MeshtasticIcons.Info,
+ trailingIcon = MeshtasticIcons.ChevronRight,
+ onClick = onNavigateToAcknowledgements,
+ )
+ }
+}
+
+@Composable
+private fun ProjectInformationSection(
+ onOpenWebsite: () -> Unit,
+ onOpenDocs: () -> Unit,
+ modifier: Modifier = Modifier,
+) {
+ ExpressiveSection(title = stringResource(Res.string.project_information), modifier = modifier) {
+ ListItem(
+ text = stringResource(Res.string.website),
+ leadingIcon = MeshtasticIcons.Language,
+ trailingIcon = MeshtasticIcons.ChevronRight,
+ onClick = onOpenWebsite,
+ )
+ ListItem(
+ text = stringResource(Res.string.documentation),
+ leadingIcon = MeshtasticIcons.HelpOutline,
+ trailingIcon = MeshtasticIcons.ChevronRight,
+ onClick = onOpenDocs,
)
}
}
+
+@Composable
+private fun CopyrightFooter(modifier: Modifier = Modifier) {
+ Text(
+ text = stringResource(Res.string.copyright_notice),
+ modifier = modifier.fillMaxWidth().padding(vertical = 8.dp),
+ style = MaterialTheme.typography.bodySmall,
+ color = MaterialTheme.colorScheme.onSurfaceVariant,
+ textAlign = TextAlign.Center,
+ )
+}
+
+@Composable
+private fun NeedHardwareRow(onOpenHardwareLink: () -> Unit, modifier: Modifier = Modifier) {
+ var currentDeviceIndex by remember { mutableIntStateOf(0) }
+
+ LaunchedEffect(Unit) {
+ while (true) {
+ delay(CAROUSEL_INTERVAL_MS)
+ currentDeviceIndex = (currentDeviceIndex + 1) % POPULAR_DEVICES.size
+ }
+ }
+
+ Row(
+ modifier = modifier.fillMaxWidth().clickable(onClick = onOpenHardwareLink).padding(16.dp),
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.spacedBy(16.dp),
+ ) {
+ Box(
+ modifier = Modifier.width(CAROUSEL_IMAGE_WIDTH).height(CAROUSEL_IMAGE_HEIGHT),
+ contentAlignment = Alignment.Center,
+ ) {
+ Crossfade(
+ targetState = POPULAR_DEVICES[currentDeviceIndex],
+ animationSpec = tween(durationMillis = CROSSFADE_DURATION_MS),
+ ) { device ->
+ val imageUri = remember(device.svgFileName) { Res.getUri("files/${device.svgFileName}") }
+ AsyncImage(
+ model = ImageRequest.Builder(LocalPlatformContext.current).data(imageUri).build(),
+ contentDescription = null,
+ contentScale = ContentScale.Fit,
+ modifier = Modifier.fillMaxSize(),
+ )
+ }
+ }
+
+ Column(modifier = Modifier.weight(1f), verticalArrangement = Arrangement.spacedBy(4.dp)) {
+ Text(
+ text = stringResource(Res.string.need_hardware),
+ style = MaterialTheme.typography.titleMedium,
+ fontWeight = FontWeight.SemiBold,
+ color = MaterialTheme.colorScheme.primary,
+ )
+ Text(
+ text = stringResource(Res.string.need_hardware_description),
+ style = MaterialTheme.typography.bodySmall,
+ color = MaterialTheme.colorScheme.onSurfaceVariant,
+ )
+ }
+ }
+}
+
+@Preview
+@Composable
+private fun AboutScreenPreview() {
+ AppTheme { AboutScreen(appVersionName = "2.5.0", onNavigateUp = {}, onNavigateToAcknowledgements = {}) }
+}
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/AcknowledgementsScreen.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/AcknowledgementsScreen.kt
new file mode 100644
index 0000000000..7de6d9c02f
--- /dev/null
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/AcknowledgementsScreen.kt
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2026 Meshtastic LLC
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+@file:OptIn(ExperimentalMaterial3ExpressiveApi::class)
+
+package org.meshtastic.feature.settings
+
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
+import androidx.compose.material3.HorizontalDivider
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Scaffold
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer
+import com.mikepenz.aboutlibraries.ui.compose.produceLibraries
+import com.mikepenz.aboutlibraries.ui.compose.variant.LibraryBadges
+import org.jetbrains.compose.resources.stringResource
+import org.meshtastic.core.resources.Res
+import org.meshtastic.core.resources.acknowledgements
+import org.meshtastic.core.resources.library_count
+import org.meshtastic.core.resources.open_source_description
+import org.meshtastic.core.resources.open_source_libraries
+import org.meshtastic.core.ui.component.MainAppBar
+
+/**
+ * Shared Acknowledgements screen listing the open-source libraries the app is built on, using the multiplatform
+ * [LibrariesContainer] composable and [produceLibraries] from the AboutLibraries KMP library.
+ *
+ * Leverages the full M3 [LibrariesContainer] API:
+ * - **header**: app branding with descriptive text
+ * - **divider**: [HorizontalDivider] between library items for clean visual separation
+ * - **footer**: total library count summary
+ * - **contentPadding**: proper LazyColumn padding (avoids clipping during scroll)
+ * - **badges**: per-row metadata badges (author, version, description, license, funding) via [LibraryBadges]
+ * - **license dialog**: built-in license dialog wired by default via the container's `licenseDialogBody`
+ *
+ * Each platform provides a [jsonProvider] lambda that loads the library definitions JSON
+ *
+ * @see <a href="https://github.com/mikepenz/AboutLibraries">AboutLibraries KMP</a>
+ */
+@Composable
+fun AcknowledgementsScreen(onNavigateUp: () -> Unit, jsonProvider: suspend () -> String) {
+ val libraries by produceLibraries(jsonProvider)
+
+ Scaffold(
+ topBar = {
+ MainAppBar(
+ title = stringResource(Res.string.acknowledgements),
+ canNavigateUp = true,
+ onNavigateUp = onNavigateUp,
+ ourNode = null,
+ showNodeChip = false,
+ actions = {},
+ onClickChip = {},
+ )
+ },
+ ) { paddingValues ->
+ LibrariesContainer(
+ libraries = libraries,
+ modifier = Modifier.fillMaxSize(),
+ contentPadding = paddingValues,
+ badges = LibraryBadges(version = true, author = true, description = true, license = true, funding = true),
+ header = {
+ item {
+ AcknowledgementsHeader()
+ HorizontalDivider()
+ }
+ },
+ divider = { HorizontalDivider() },
+ footer = {
+ val count = libraries?.libraries?.size ?: 0
+ if (count > 0) {
+ item {
+ HorizontalDivider()
+ Box(modifier = Modifier.fillMaxWidth().padding(16.dp), contentAlignment = Alignment.Center) {
+ Text(
+ text = stringResource(Res.string.library_count, count),
+ style = MaterialTheme.typography.labelMedium,
+ color = MaterialTheme.colorScheme.onSurfaceVariant,
+ )
+ }
+ }
+ }
+ },
+ )
+ }
+}
+
+@Composable
+private fun AcknowledgementsHeader() {
+ Column(modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp, vertical = 12.dp)) {
+ Text(
+ text = stringResource(Res.string.open_source_libraries),
+ style = MaterialTheme.typography.titleMediumEmphasized,
+ color = MaterialTheme.colorScheme.primary,
+ )
+ Text(
+ text = stringResource(Res.string.open_source_description),
+ style = MaterialTheme.typography.bodySmall,
+ color = MaterialTheme.colorScheme.onSurfaceVariant,
+ modifier = Modifier.padding(top = 4.dp),
+ )
+ }
+}
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/navigation/SettingsNavigation.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/navigation/SettingsNavigation.kt
index 4a116f1430..c39418ed86 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/navigation/SettingsNavigation.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/navigation/SettingsNavigation.kt
@@ -40,6 +40,7 @@ import org.meshtastic.core.navigation.NodesRoute
import org.meshtastic.core.navigation.Route
import org.meshtastic.core.navigation.SettingsRoute
import org.meshtastic.feature.settings.AboutScreen
+import org.meshtastic.feature.settings.AcknowledgementsScreen
import org.meshtastic.feature.settings.AdministrationScreen
import org.meshtastic.feature.settings.DeviceConfigurationScreen
import org.meshtastic.feature.settings.DeviceLinkDirectoryScreen
@@ -403,7 +404,16 @@ fun EntryProviderScope<NavKey>.settingsGraph(
}
entry<SettingsRoute.About> {
+ val settingsViewModel: SettingsViewModel = koinViewModel()
AboutScreen(
+ appVersionName = settingsViewModel.appVersionName,
+ onNavigateUp = dropUnlessResumed { backStack.removeLastOrNull() },
+ onNavigateToAcknowledgements = dropUnlessResumed { backStack.add(SettingsRoute.Acknowledgements) },
+ )
+ }
+
+ entry<SettingsRoute.Acknowledgements> {
+ AcknowledgementsScreen(
onNavigateUp = dropUnlessResumed { backStack.removeLastOrNull() },
jsonProvider = { getAboutLibrariesJson() },
)
diff --git a/feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/AboutScreenTest.kt b/feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/AboutScreenTest.kt
new file mode 100644
index 0000000000..e6d2569293
--- /dev/null
+++ b/feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/AboutScreenTest.kt
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2026 Meshtastic LLC
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+package org.meshtastic.feature.settings
+
+import androidx.compose.ui.test.ExperimentalTestApi
+import androidx.compose.ui.test.assertIsDisplayed
+import androidx.compose.ui.test.onNodeWithContentDescription
+import androidx.compose.ui.test.onNodeWithText
+import androidx.compose.ui.test.performClick
+import androidx.compose.ui.test.v2.runComposeUiTest
+import org.meshtastic.core.ui.theme.AppTheme
+import kotlin.test.Test
+import kotlin.test.assertTrue
+
+@OptIn(ExperimentalTestApi::class)
+class AboutScreenTest {
+
+ @Test
+ fun `about screen displays all sections and content`() = runComposeUiTest {
+ var navigatedUp = false
+ var navigatedToAcknowledgements = false
+
+ setContent {
+ AppTheme {
+ AboutScreen(
+ appVersionName = "2.5.0",
+ onNavigateUp = { navigatedUp = true },
+ onNavigateToAcknowledgements = { navigatedToAcknowledgements = true },
+ )
+ }
+ }
+
+ // Top app bar
+ onNodeWithText("About").assertIsDisplayed()
+
+ // What is Meshtastic section
+ onNodeWithText("What is Meshtastic?").assertIsDisplayed()
+ onNodeWithText(
+ "An open source, off-grid, decentralized, mesh network that runs on affordable, low-power radios.",
+ )
+ .assertIsDisplayed()
+
+ // Apps section
+ onNodeWithText("Apps").assertIsDisplayed()
+ onNodeWithText("Need Hardware?").assertIsDisplayed()
+ onNodeWithText(
+ "Meshtastic requires a compatible device. Our backers and partners offer ready-to-use hardware. " +
+ "Here are some of the most popular options.",
+ )
+ .assertIsDisplayed()
+ onNodeWithText("GitHub Repository").assertIsDisplayed()
+ onNodeWithText("Version").assertIsDisplayed()
+ onNodeWithText("2.5.0").assertIsDisplayed()
+ onNodeWithText("Acknowledgements").assertIsDisplayed()
+
+ // Project information section
+ onNodeWithText("Project information").assertIsDisplayed()
+ onNodeWithText("Website").assertIsDisplayed()
+ onNodeWithText("Documentation").assertIsDisplayed()
+
+ // Copyright footer
+ onNodeWithText("Meshtastic® Copyright Meshtastic LLC").assertIsDisplayed()
+
+ onNodeWithText("Acknowledgements").performClick()
+ assertTrue(navigatedToAcknowledgements)
+
+ onNodeWithContentDescription("Navigate Back").performClick()
+ assertTrue(navigatedUp)
+ }
+}
diff --git a/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/DesktopSettingsScreen.kt b/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/DesktopSettingsScreen.kt
index 4466001ded..ae5bc32b4d 100644
--- a/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/DesktopSettingsScreen.kt
+++ b/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/DesktopSettingsScreen.kt
@@ -43,7 +43,7 @@ import org.meshtastic.core.navigation.Route
import org.meshtastic.core.navigation.SettingsRoute
import org.meshtastic.core.navigation.WifiProvisionRoute
import org.meshtastic.core.resources.Res
-import org.meshtastic.core.resources.acknowledgements
+import org.meshtastic.core.resources.about
import org.meshtastic.core.resources.app_settings
import org.meshtastic.core.resources.app_version
import org.meshtastic.core.resources.bottom_nav_settings
@@ -285,7 +285,7 @@ private fun DesktopAppInfoSection(
) {
ExpressiveSection(title = stringResource(Res.string.info)) {
ListItem(
- text = stringResource(Res.string.acknowledgements),
+ text = stringResource(Res.string.about),
leadingIcon = MeshtasticIcons.Info,
trailingIcon = MeshtasticIcons.ChevronRight,
) {
diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotAppInfoSection_Dark_d19fbf1f_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotAppInfoSection_Dark_d19fbf1f_0.png
index ec724ed04d..5c62da7060 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotAppInfoSection_Dark_d19fbf1f_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotAppInfoSection_Dark_d19fbf1f_0.png differ
diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotAppInfoSection_Light_b29dc7a7_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotAppInfoSection_Light_b29dc7a7_0.png
index c324cc2f25..b31ba97c8d 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotAppInfoSection_Light_b29dc7a7_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotAppInfoSection_Light_b29dc7a7_0.png differ
Served by rngit 1.5.0 - Generated in 0.3s